LINUX.ORG.RU
решено ФорумTalks

О проблемах СИ, о проблемах СИ++, и вообще помогите разобраться что творится в мире этом?

 , ,


0

3

Только что сидели в дискорде с человеком одним, написавшим бота чисто на ИИ(по его словам), по виду не особо разбирающегося в том, как работает сам бот и что он делает. Естессна, вспомнив про то, что вокруг одни говноеды и тру-кодеры вымерли (цитируя: Когда-то на нём писался практически весь софт, и понятие «быть программистом» однозначно и безальтернативно включало в себя «знать Си».), я поднял панику. Откуда не возьмись выскачил ещё один чел, который прямо пошёл на меня со словами следующими:

[22:45] ну по твоим же словам
[22:45] если ты си-процедурщиков превозносишь
[22:46] язык с кучей проблем с безопасностью памяти

язык с кучей проблем с безопасностью памяти

Часто читал об этом. В ответ упомянул, что есть безопасный Раст, крайне нелюбимый львиной долей ЛОРа. Как вдруг тот же чел выдвигает своё сильное заявление о том, что Rust - это не альтернатива СИ, и что альтернативой СИ будет Zig(я никогда про него не слышал).

[22:49] зиг - альтернатива си
[22:49] превозносить си, который любой функциональщик будет презирать
[22:50] любой, кто пишет на хаскеле, лиспах

Пишу чуть ли не ночью, поэтому сейчас туго соображаю. Что за Zig? Кто начал форсить Rust как альтернативу C? Не сам же я это придумал. И с каких пор C теперь не в почёте?

Перемещено hobbit из general


сишечку выкатили в начале 70х. и за это время полно было разных альтернатив, много лучших чем сишечка, но воз и ныне там. и раз за 50 лет ничего не случилось, то и еще 50 не случится.

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)

язык с кучей проблем с безопасностью памяти

Передай клоуна ему. За толстоту.

u5er ★★★
()

А ты спроси с них для начала за возраст и за опыт. А то может им мамка клаву дала, чтобы они руки под одеяло не засовывали.

water_closed
()

«There are only two kinds of languages: the ones people complain about and the ones nobody uses.»

kaldeon
()

О проблемах СИ, о проблемах СИ++, и вообще помогите разобраться что творится в мире этом?

Си - это по сути чуть более высокоуровневый и хорошо портируемый ASM. Теперь подумай, какой процент кода проекта обычно пишут на асме? Немного?

Сейчас уже есть довольно хорошие транспайлеры типа Nelua.io и Haxe, которые генерят в т.ч. и сишный код и прекрасно интегрируются с сишными либами. Но это высокоуровневые ЯП с гораздо большей продуктивностью кодера, где допустить ошибку управления памятью намного менее вероятно.

Ещё транспайлеры с удачным синтаксисом входного ЯП типа Haxe очень полезны для таргетов типа петона с очень неприятным синтаксисом (проблема далеко не только в отступах), но хорошими другими свойствами типа высокой портабельности и большого обилия готовых либ.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 2)
Ответ на: комментарий от MOPKOBKA

Все равно ее не брошу

При наличии богатых спонсеров можно надра_ивать хоть в маш кодах, когда дедайны почти отсутствуют.

sanyo1234
()
Ответ на: комментарий от sanyo1234

Эти богатые спонсоры, управляют ими и просят не фиксить баги годами, условно просят управляя их сознанием, чтобы стадо не вышло из под контроля и вот уже сменились приоритеты, другой этап завершен и теперь нужны очень безопасные системы, чтобы не вышли из под контроля)))))))

С одной стороны переход на раст это хорошо а с другой гаечки крутятся по всем фронтам, если более глубоко и широко взглянуть на процессы и не уходить в частности а связывать на таймлайне множество звоночков, вырисовывается картина с гаечкам которые крутит кто то из-за кулис))

RedTerror
()
Последнее исправление: RedTerror (всего исправлений: 2)

Проблемы с безопасностью памяти и прочие не в Си, они в головах нубов которые пытаются кодить на нём в прод, не имея на то нужной квалификации. Эти же самые нубы и на других языках обычно пишут исключительно помои.

Если нужна скорость работы и при этом высокоуровневость то альтернатив Си нет и скорее всего не будет. А нубов в дискордах и прочих развлекательных сайтах не надо воспринимать всерьёз, и тащить сюда их флуд тоже не надо.

firkax ★★★★★
()

зиг - альтернатива си

В пейсту такая альтернатива. Когда у них через 2 года код перестаёт собиратья вообще и в принципе - это детский сад, а не альтернатива.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)

Zig это такой Rust от MIT-овца, которому понравилась концепция, но не понравилось то что разработчики раста положили болт на парадигменность, совместимость с сишными/плюсовыми модулями, а так же заточили язык под IDE и одну систему сборки с npm-репозиторием.

В общем ученый против сои. Или университетский дед против вебмакак с нодой.

uin ★★★
()
Ответ на: комментарий от uin

Zig это такой Rust от MIT-овца, которому понравилась концепция

Какая концепция? Да и вообще: https://andrewkelley.me/post/intro-to-zig.html (2016 Feb 08).

The past few months I took a break from working on Genesis Digital Audio Workstation to work, instead, on creating a new programming language.

I am nothing if not ambitious, and my goal is to create a new programming language that is more pragmatic than C. This is like to trying to be more evil than the devil himself.

В общем ученый

Не похож.

dataman ★★★★★
()
Ответ на: комментарий от uin

Концепция раста это borrow checker, который выкручивает руки и заставляет писать страшный код Этого г-а в zig нет

Reset ★★★★★
()

...по его словам...

Вот именно.

sparkie ★★★★★
()
Ответ на: комментарий от alysnix

У Си основное преимущество — на нём написан этот ваш un*x.

sparkie ★★★★★
()
Ответ на: комментарий от sanyo1234

Вообще, круг вопросов, заданных ТС, непрост, в двух словах и не ответишь-то.

sparkie ★★★★★
()

Как челу далекому от кодинга могу предположить что си - это паровая машина. Поэтому нужно уже переписывать все поновому.

TheNewDragon
()
Ответ на: комментарий от dataman

Какая концепция?

Язык с околоскриптовым синтаксисом (автор любит питон и веб) компилирующийся в сишную программу.

Под «сишной программой» имеется в виду использование стандартной сишной библиотеки, а вся семантика зиго-раста это компаил-тайм сейфти обертка по сути. Эту идею растоманы тоже принесли из мира node-js, где всякие тейпскрипты-кофескрипты компилируются в джаваскрипт/вебассемблер и никто даже не пытается уже изобретать свои интерпритаторы и JIT.

Не похож.

Носит очки и лекции читает значит ученый.
В любом случае он как минимум учился в MIT, тамошние профессора его научили трепетно относиться к имеющейся кодовой базе, ценить возможность писать код карандашом в блокноте и компилять написанным на коленке компилятором. Неумение писать на низкоуровневых языках (С/С++) с управлением памятью и любовь к интерпритируемым лисп/питон подобным, а так же чисто философский (парадигменный) подход во всем тоже говорит о старой академической школе.

Если посмотреть на раст там все наоборот: полный отказ от совместимости со всем существующими либами и попытка все переписать и переосмысливать. Тотальное использование двух-трех буквенных сокращений. Хорошее знание C/C++ по управлению памятью и оптимизаций программ на низком уровне (наверное отсюда и стремление все переписать с нуля). Заточенность языка на проектную разработку в IDE уровня вижуал студии, где код постоянно проверяется запусками фронтенда, но если особенности С/С++ не позволяют той же вижуалстудии отловить ошибки работы с памятью, то в расте все сделано так чтоб максимально все предугадывать и подкрашивать. Никаких инклюдов только экспорт модулей с помодульной сборкой с LTO и пакетный менеджер он же сборщик/запускальщик прям как npm.

В общем бросается в глаза что раст делали опытные мартышки под себя и свое чувство прекрасного. И это, на мой субъективный взгляд, самый фатальный просчет, язык тупо неуниверсален, его придумали что бы утечки в памяти в браузере победить, но в итоге этот чудо-молоток со встроенной кофеваркой и микроскопом ни гвозди нормально не забивает ни в микробиологии не нужен - плюсы в браузере не заменил, в геймдев и эмбедед тоже не влез, давайте хоть консольные утилиты на линуксе перепищшем, хоть так притулим его куда нибудь.

uin ★★★
()
Последнее исправление: uin (всего исправлений: 1)
Ответ на: комментарий от TheNewDragon

Поэтому нужно уже переписывать все поновому.

Кому нужно?

u5er ★★★
()
Ответ на: комментарий от Reset

Борроу чекер это как раз компаил-тайм секьюрность, хотя в расте поумолчанию еще и рантайм (валгринд+санитайзер) предлагался. Сейчас от этого как то ушли (на сегодняшний день практически в unsafe), ну а zig изначально только на компаил-тайм безопасность и ориентировался.

uin ★★★
()

Ну давай я тебе объясню.

Когда-то на нём писался практически весь софт, и понятие «быть программистом» однозначно и безальтернативно включало в себя «знать Си»

Такого времени в буквальном смысле никогда не было. Потому что даже если рассматривать системщину, до 70х никакой сишки не было, а системы были. Т.е. сишка - это безальтернативно только для системщиков после 70х.

seiken ★★★★★
()
Ответ на: комментарий от uin

Неумение писать на низкоуровневых языках (С/С++)

Раньше компилятор Zig был написан полностью на C++, и 8ГБ памяти хватало для компиляции компилятора.
Потом «учёный» начал его переписывать и оптимизировать, и памяти хватать перестало.
На этом я с Zig распрощался.

dataman ★★★★★
()
Ответ на: комментарий от uin

Рантайм борроу-чекер в расте делается с помощью боксинга и бесконечных wrap/unwrap. Без него ничего серьезного вообще не напишешь. Но код становится уродливым и нечитаемым.

Reset ★★★★★
()
Ответ на: комментарий от firkax

Проблемы с безопасностью памяти и прочие не в Си, они в головах нубов которые пытаются кодить на нём в прод

А можно пример НЕНУБА с квалификацией?

Ну например Gnome Foundation - нубы? По твоей метрике - да, ведь их Gnome3 тек как сучка в продакшене. А GTK и до сих пор течет в некоторых юзкейсах.

Так что твое утверждение - банальный риторический прием дилеммы дилетанта: - вы все не шарите как надо, а как надо - я не покажу.

windows10 ★★★★★
()
Ответ на: комментарий от windows10

Ну например Gnome Foundation - нубы?

Однозначно. Да не просто нубы, а патологически профпепригодные во всех аспектах, кроме распила бюджетов и соучастия во всяких sjw-движениях. Вообще странный пример.

firkax ★★★★★
()

Си - это чтобы не писать адреса на ассемблере. То, что там такое управление памятью - это фича, а не недостаток.

Shadow ★★★★★
()
Ответ на: комментарий от Shadow

Но, ведь на ассемблере не надо писать никакие адреса, по крайней мере в ситуациях, когда их не надо писать на C.

James_Holden ★★★★★
()
Ответ на: комментарий от firkax

Будет конечно. Например я. Но к сожалению я мало софта написал.

Нет бро, ты должен написать не «много софта», а «комплексный софт» - только тогда ты оценишь все преимущества языка С.

Соснольные утилиты для поисков mp3 на диске - это не софт, а наколенная поделка.

А вот ФМом уровня mc - ты вполне можешь похвастаться. Который не будет вылетать, не будет жрать память по мере перехода с директории в директорию, не будет виснуть при попытке поискать в больше чем трех вложенных директориях, будет поддерживать произвольное выделение и его же произвольное снятие, вырезание\копирование в том числе рекурсивное, ну в общем типичный функциональный ФМ.

И вот когда через полгода разработки в принципе тривиальной софтины, ты заманаешься бороться с С, тогда признаешь что:

1. Специалистов по С не существует, потому что

2. Сам по себе С давно перестал быть языком прикладного уровня, потому что с 80хх годов сложность софта многократно возросла, и даже не беря во внимание ограничения самого языка, случайно выстрелить себе в ногу среди десятков тысяч строк кода - выше, чем когда кот - прост, чистен и понятен.

windows10 ★★★★★
()
Ответ на: комментарий от windows10

А вот ФМом уровня mc - ты вполне можешь похвастаться.

Имеется в планах.

ты заманаешься бороться с С

Не заманался за больше 10 лет и не заманаюсь. С Си надо не бороться, им надо пользоваться.

Сам по себе С давно перестал быть языком прикладного уровня

Он не очень подходит для двух категорий софта:

1) где в самой задаче имеется ярко выраженная объектная ориентация, включающая полиморфизм, и этот аспект тратит на себя больше мыслительных ресурсов программиста, чем собственно полезная логика - тут нужно что-то с нативным ООП (сразу скажу, фм сюда не относятся)

2) где нужно сильно экономить время разработки и не очень нужна скорость работы и общее качество получившегося продукта - тут нужна скриптота типа пхп

Обращаю внимание, оба пункта связаны вовсе не с какими-то «небезопасностями».

firkax ★★★★★
()
Ответ на: комментарий от firkax

Не не не. Ты ж там рассказывал что проблема С в том, что пишущие на нем не имеют квалификации.

Если у квалификации не будет метрики - это банальная демагогия с манипулятивной целью.

Поэтому расскажи лучше в чем она измеряется, и на каком делении шкалы должна быть эта квалификация, чтобы писать правильный код без утечек памяти и прочих выстрелов в ногу.

Ну так чтоб люди сначала ее достигли, а потом начали писать код ;)

windows10 ★★★★★
()
Ответ на: комментарий от windows10

А можно пример НЕНУБА с квалификацией?

Например Фабрис Беллар.

Gnome Foundation - не только конченные нубы, но ещё и тридварасы во всех смыслах.

Stanson ★★★★★
()
Ответ на: комментарий от dataman

8ГБ памяти хватало для компиляции компилятора

Не связано напрямую, но 8 ГиБ это практически минимальное количество ОЗУ, которое можно поставить в современный настольный компьютер. Никогда не видел в продаже плашек DDR5 объёмом меньше 8 ГиБ. Похоже, их даже не выпускают.

i-rinat ★★★★★
()
Ответ на: комментарий от sanyo1234

Си - это по сути чуть более высокоуровневый и хорошо портируемый ASM.

Кстати, очень плохое высказывание. Прям задолбали его везде пихать - оно вредное. В одном предложении два противоречащих утверждения - ASM, но высокоуровневый. Это утверждение какбэ намекает нам, что трахания в Си будет сравнимое количество с ASM, поэтому его-то в одно предложение с ASM и ставят. А трахания там в разы меньше, потому что он таки заметно высокоуровневый. Си - такой язык, где уже можно вообще не вспоминать о существовании железа, на котором он работает. Где не заработало - там либо компилятор не придумали, либо памяти не хватило.

Про СИ можно сказать, что это минимально человекочитаемый язык, на котором выразимы системы любой сложности на вполне высоком уровне абстракции - пример таких систем: PostgreSQL или linux ядро. На ассемблере подобное не читаемо и не реализуемо (если в дурку не уехать), а привнесение в подобный проект Rust или C++, с точки зрения профессионалов, ЗАМЕТНО качество кода, читаемость и выразительность не увеличивает. Переход ASM -> СИ - это как запрыгнуть с земли на небоскрёб, а переход с СИ на C++ - это уже небольшое катание на лифте между последними 5 этажами небоскрёба в поисках вида из окна получше. Жалобы на СИ - это как жить на 50-м этаже шикарного небоскрёба в квартире, где все краны немного текут и в кладовке воняет плесенью и в одной из 5 спален розетки искрят, если ими пользоваться. Но это всё равно в разы лучше, чем предыдущая жизнь в земляной холодной норе. C++, Rust и прочая хрень - это уже разговоры про то, что надо было хату брать на 3 этажа выше, где ремонт поновее и по дому ездят роботы подметают. Неумелый чертила и там и там окна поразбивает и те краны будут мелочью.

lesopilorama
()
Последнее исправление: lesopilorama (всего исправлений: 4)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)