Как стать автором
Обновить

Можно ли собрать в одном большом гайде всё, что полезно знать о языке C и его применениях

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4.7K
Всего голосов 10: ↑8 и ↓2+7
Комментарии8

Комментарии 8

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

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

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

Честно, я так и не примирился с этой идеологией)) Очень часто я встречал данную мысль и так и не смог с ней ужиться. Возможно, что просто еще не достаточно продвинут в плюсах, но каждый раз при виде чистого Си впадаю в ступор) Мой скромный опыт показал, что границы между Си и С++ стерты(в хорошем смысле) у программистов, которые начинали с Си и перешли на С++ , либо те кто начинал примерно с С++ 98, вот они достаточно ловко переключаются между Си и плюсами. Я пришел уже в С++ 17 и судя по тому, что те кто со мной тогда обучался, так же так и не смогли принять Си, видимо подтверждает теорию, что к хорошему привыкаешь быстро) Тогда же кст видел, что многие не разделяют Си и С++ уже в плохом смысле, не понимая какая функция является сишной, а какая плюсовой. Поэтому, конечно хорошо, что очень опытные программисты умеют стирать границы между этими языками, но мне кажется , что пора уже разделить их

но мне кажется , что пора уже разделить их

так а что значит разделить? убрать из С++ синтаксис чистого Си? Я думаю что такие прецеденты уже есть, например Java, вполне можно рассматривать как подобного рода эксперимент, как вы думаете? Ну там прикрутили еще сборщик мусора конечно, но основное то - классы, интерфейсы, дженерики - идеи те же что в плюсах в общем и целом. Как минимум можно анализировать что получается если С++ оторвать от исходного Си синтаксиса и связанных с ним возможностей на примере, по моему.

например Java, вполне можно рассматривать как подобного рода эксперимент, как вы думаете?

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

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

P.S Да я понимаю, что вроде как идет неспешный переход от Си к С++. И все это нужно ибо легаси код на Си не выкинешь в мусор и он должен работать, пока в проект постепенно внедряется С++.(Вроде как раз в новом Unreal 5 компания практически закончила переход). Но как будто переход затянулся и пора все таки разъединяться

P.S.S. Пока писал решил немного погуглить и даже нашел вот такой раздел в вики С++. Не знаю наскок он имеет место быть в жизни, но если это правда, то вроде как подтверждает мои мысли о том, что С++ уже перерос как усиление Си и пора ему обрести собственный смысл существования и отделиться от Си

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

я поэтому и привел ее в пример потому что проект удачный :) ! Но я ее тоже не то чтобы не люблю, не очень доверяю, потому что нет у нее интеграции с нативными библиотенами системного уровня, все через посредника который теоретически может подвести или просто не дать полноценного доступа куда то.

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

Я думаю если вы серьезно займетесь подобного рода вопросом на этом или каком то другом практическом примере вы поймете что какие-то частные особенности языка это не главное для серьезных проектов. Главное это понимание и проработанность разработчиком (или группой разработчиков) идеи которую они пытаются реализовать и адекватность этой идеи предметной области с которой они работают. Если такую идею не смогли для себя нормально сформулировать разработчики то человек со стороны вряд ли сможет понять их код, либо ему понадобятся дополнительные усилия чтобы по сути додумывать то что не получилось додумать первым разработчикам.

а в чем смысл С++ и его собственно плюсы) Получал ответы сводящиеся: "Синтетический сахар"

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

Си — универсальный середнячок. На нём можно, с большими или меньшими разумными усилиями, сделать всё (а с __asm{mov бла бла} — чуть более, чем всё).

Изучили в школе мигание лампочками в машинных кодах? Дальше преобразовали сишный хелловорлд в машкоды, посмотрели их исполнение «на лампочках» и всё, в голове у детей отложилось понимание принципов, дальше учим только Си. Этого достаточно для полноценной базы, остальное уже смогут сами понять те, кто пойдёт в IT.

Как электрофорная машина на физике. Основа основ.

А вот в чём Си по-настоящему хорош? Это зависит от того, насколько ты хорош в Си. Если на нём разговариваешь, как на родном языке — оверхед по сравнению со специализированными языками легко перекроется таким качеством владения для 95% случаев.

Си — универсальный середнячок

Мне кажется в наше время уже не середнячок, Си это самый низкоуровневый из мейнстримных. Ниже только ассемблер, но он применяется всё реже.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации