Pull to refresh

Comments 69

Я бы даже сказал, C programmers trainer. Very costly!
UFO just landed and posted this here
UFO just landed and posted this here
Напомнило.
Скрытый текст
Спят подружки вредные
Безмятежным сном.
Снятся мышкам хлебные
Крошки под столом,
Буратинам — досточки,
Кошкам — караси,
Всем собакам — косточки,
Программистам — Си.

Евгений Романов, Колыбельная

UFO just landed and posted this here
Спасибо, своим детям буду петь перед сном :)
Надо сохранить! Шедевр!
Не надо снисходительно относиться к этому языку: он очень активно используется по сей день и, судя по всему, будет использоваться ещё очень долго в самых разных сферах.

Нет сомнений в том, что С никуда не денется. Нет аналогов такому прекрасному низкоуровневому языку. Но ведь такую статью можно написать практически про каждый язык программирования.
* PHP — миллиарды веб-сайтов, от персональных страниц, до корпоративных решений, и пр.
* JavaScript — ни один веб-сайт на текущий момент не обходится без него (если уж не вспоминать о Node.JS)
* Java/.NET — миллионы корпоративных решений, банковский сектор, и пр.
* Python, Ruby, Go…

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

Так и пусть будут, отчего нет? Я с историей и областью применения Си хорошо знаком, а вот о Ruby например мало что знаю.

К слову, в статье стоило бы упомянуть хотя бы Дэнниса Ритчи.
Поддерживаю. Конкретно, стоило бы упомянуть книгу, которую многие разработчики, как и я считают ни много не мало Библией Программиста:
Брайан Керниган, Деннис Ритчи — The C Programming Language
Не холивара ради, а «на подумать»: все интерпретируемые выше языки написаны на Си. Если углубляться, то и не только они
Согласен. Даже в случае с .NET/Java, байткод исполняет платформа, написанная на С и это даже можно было указать в качестве части этой статьи.

Но ведь это не значит, что программы, написанные на других языках программирования, написаны на С, верно?
А железо все равно работает с машинными кодами. Язык — это всего лишь инструмент, не более того. У каждого инструмента свои преимущества и недостатки, и именно наличие недостатков или отсутствие преимуществ вызывают появление новых языков. С никуда не денется, но сейчас он не нужен в тех количествах, в каких был нужен раньше, а вопросы о «учить/не учить» поднимаются в основном для молодых разработчиков.
Добавлю, что текущий уровень прогресса не был бы на таком уровне, если бы человечество не изобрело колесо, затем палку копалку… потом молотки, печи, ножи, свёрла, станки, станки которые делают станки, которые делают другие высокоточные станки итд. Один инструмент позволяет сделать другой. Не сказать ведь сейчас, что без колеса не было бы компьютеров? А без С не было бы php? Заставляет задуматься — Где та граница значимости, кто кого сделал и без кого небыло бы другого
.NET сейчас переписывается на C#.
.NET не является интерпретируемым языком, да и большая часть .NET уже давно была написана на нем же. На плюсах только CLR.
PHP, JS-машины, Python совершенно точно написаны на С/С++. Популярность всего вами перечисленного только добавляет веса сям :-)
UFO just landed and posted this here
Модно было когда пых был совсем откровенной дрянью (во времена 4ки). Сейчас «хейт» просто разоблачает человека, последний раз видевшего PHP во времена институтской жизни лет десять назад, ныне он покрасивее и удобнее многих современников.

Имхо конечно же.
UFO just landed and posted this here
У него там комментарий забавный,
перед скриптом Google Analytics
<!-- yes, I know...wanna fight about it? -->

Вы только определитесь — C или C++. Это, по слухам, всё-таки разные языки. И даже не подмножество один другого.
Кстати да! У них даже создатели разные…
Не понимаю почему минусуют. Всегда считал создателем Си — Денниса Ритчи, а С++ Бьёрна Страуструпа.
Раньше это был один и тот же язык (точнее обратно совместимый, си с классами) и уже потом языки разделились, в данный момент уже не имея обратной совместимости (я ведь не ошибаюсь?). Так что преподносить информацию о том, что языки разные, аргументируя это тем, что дизайнеры языков разные — слишком самонадеянно, по-моему. Тут немного иная причина.
Спасибо за разъяснение.
Если исключить С++ статья станет в разы меньше =) Хотя именно после таких вот статеек Линуса Торвальдса спрашивают почему он пишет ядро на С а не на передовом С++ =)
После такого вопрошающий обычно много нового узнает о своих программерских скиллах от Линуса и о С++ в целом :)
Какая то нездоровая пропаганда С от Nix Solutions. Статья ни о чем.
… плюс, за подобные бездарные опусы от си-голодного мозга, авторов просто обязаны ссылать на трехгодичную каторгу по поддержению легаси на фортране, коболе и пл/1, с последующей чисткой остатка сознания бейсиком, модулой-2 и остальными ассемблерами.
Автор пропустил, практически, всю историю программирования, и ее завоевания (создания стандартизации, посикс стандарта и юниксподобных файловых систем, с их плюсами и минусами), дескредитирует своей интерпретацией этих результатов как победы языка си. Чтож, эта «победа» имеет и обратную сторону — тотольную забагованность програмного обеспечения (тот же миникс и сеЛ4, не гарантируют полное отсутсвие багов в своем коде), постоянные переписывания кода, приводящие к появлению новых-старых си уязвимостей (в эпоху си-благоденствия и мира, как жаль, что все нельзя переписать на си… приходится использовать всякие питоны, явы, диезы и баш), Этот язык — язык легаси, и должен быть использоват только там. Те кто призывает его использовать теперь, и только его, чтож, выше описан приговор ему.
UFO just landed and posted this here
))) нет, программировал, на этом прекрасном и чудном языке, и вершине программистской мысли, и т.д.т.п. У Вас есть факты опровергающие мои заявления? Да, си не самый кривой из языков, есть и корявее, но то, что он делает с наивными детьми печалит, он состоит из дефектов которыми кастылили систему 70х. И вопрос: «Назовите причины, по которым Вы его считаете более „прекрасным“ по сравнению с модулой, растом или фортом»?
Не знаю, насколько будет уместным сравнение. Но выскажу точку зрения. Есть куча музыкальных инструментов, но фортепиано — классика. Кроме того, оно наиболее универсально во всех музыкальных смыслах (ну кроме портативности:). Ударные непревзойдённо решают свою узкую задачу, духовые — свою, струнные незаменимы в своей области. Но фортепиано, рояль были и остаются классикой.

Аналогичное место, как мне кажется, на данный момент занимает С в мире разработки.
В Ваших аналогиях, си был сконструирован как балалайка или еще более древний предок струнных, можно воткнуть куда угодно и что-то «изобразить», но всегда получатся будет «светит месяц», хотя и в оркестровой обработке.
Во время разработки си было засилье «монстров» и корпораций, языки оркестры гремели, создавались новые технологии, все было в новинку и никто не мог предвидеть, что мелкомягкие сотворят с этом бизнесом. Все было сложно, хрупко и непредсказуемо, идея мультикс накрылась из-за забагованность ПЛ/1, со сложностью которого IBM не справилось, и появилось вполне логичное решение — занять рынок встроенных решений, для которых нужны были простые os — unix, cp/m, dos; для которых нужна была эта балалайка, которую мог разработать небольшой коллектив балалайко-строителей.
UFO just landed and posted this here
UFO just landed and posted this here
В полном порядке. В мире добывают больше угля, чем нефти.
Мало того, угля, по прогнозам, хватит ещё на несколько веков, а вот нефти…
Вы тоже недавно читали статью Тима Урбана про Тесла?
Да нет, просто привел известный факт. А статью почитаю, спасибо за наводку.
Работа над многими интересными проектами, созданными на С.

Работа над легаси, который был написан ещё во времена Си
ладно, наверное есть и хорошие примеры, когда программа живет долго и хорошо
> Лингва франка. Как уже упоминалось выше, С является своеобразным «универсальным» языком для разработчиков.

Ахаха.
Осталось напомнить, что C в одном проекте из списка реализованных на C похож на другой проект, ммм, ничем.

Под C реализована невероятная гора библиотек и фреймворков. Каждый конкретный проект использует какой-нибудь свой.
Если говорить про C++, то тут вообще полный ахтунг, особенно если в данном конкретном проекте принято упрываться с template-ами или, скажем, всё писать на Boost. Толку-то от лингвы франки, если в кажом новом проекте придётся пару месяцев привыкать к местным конвенциям.
Абсолютно согласен. В каждом проекте собственный набор понятий.

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

Единый алфавит, разумеется, хорошее дело — глазу привычней и все такое (я, например, до сих пор испытываю нелюбовь к ивритским буквам), но это просто базовый алфавит. Когда дело доходит до «слов» — они все равно разные. А поскольку на С и С++ библиотеки мягко говоря бедны, то каждый изобретает свой собственный язык даже для базовых понятий.
Могла не с авторами. Как и многие программисты, начинал именно с С, причем по классической книге Кернигана/Ричи и очень благодарен этому опыту. Java и PHP с этим бэкгрундом зашли очень легко
UFO just landed and posted this here
Не знаю насчет T9, но iOS с которого писался коммент — да, на C)))
C прекрасен, мне больше нечего сказать :)
Стандартная Библиотека Шаблонов активно использует исключения для информирования об ошибках.
Меня одного удивило это утверждение? Нашёл небольшой список, который только подтвердил, что до «активно» там далековато и немало начиная с C++11. По факту: iostreams надо попросить их бросать, at() (но он для этого и сделан), new и dynamic_cast для ссылок. IMHO, «активно» не то слово (это не ошибка перевода).

Кстати, про исключения сказали, а про RTTI нет, их часто вместе отключают (хотя вес у RTTI меньше).
У RTTI не только вес меньше, но и область применимости. Он даёт вам фактически только dynamic_cast и кой-какая диагностика. Был бы там полноценный reflection — смысла его не отключать было бы больше.
«А благодаря высокому уровню оптимизации двоичных файлов ...» — компиляторы с С, как и другие, не оптимизируют двоичные файлы, они оптимизируют исходный код и/или определяемый им алгоритм на уровне исполняемой машины.
UFO just landed and posted this here
> Основная проблема С в том что он кому-то нужен, а вот D никому не нужен и это не его проблема
ясно понятно
UFO just landed and posted this here
Тем не менее внушительная часть их приняла C++. Потому что он был полезен. D же долгое время был «конструктором для любителей»: «подшей, подстрочи, укороти — и носи сколько хочешь». Даже вы, рекламируя его не сказали «можно сборщик мусора и отключить, если сделать A, B, и C», а «допилить его работу без сборщика мусора можно было сто лет назад». Ну и кому оно такое нужно, спрашивается?

Сишники, вы не поверите, решают большую часть реальные задачи, а не занимаются улучшением языка C!
UFO just landed and posted this here
Это чувство когда «сильно умные» используется в качестве оскорбления.
Например, С используется как посредник для языков Eiffel и Forth. Это означает, что вместо генерации машинного кода для каждой архитектуры компиляторы этих языков генерируют промежуточный С-код, его обрабатывает С-компилятор и уже генерирует машинный код.

Для FORTH это не так. Большинство взрослых Форт-систем написаны на Форте и генерируют код (шитый код или машинный) без посредства Си.
Подскажите с чем связана мода на define, как в примере об управлении памятью? Ведь можно написать так:
void send_uart(char byte) 
{ 
   *(char *)0x40008000 = byte;
   *(volatile char *)0x40008001 |= 0x08;
}
Это правило хорошего тона и программирования. Иначе можно «утонуть» в многочисленных константах и адресах. Нужно обрамлять их define с понятными названиями. С этим кодом могут работать другие люди или приходить новые разработчики и им нужно это читать и понимать.
Прямо герантократия какая-то.
Sign up to leave a comment.