Программирование

Программирование на C. Обзор

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

C (Си) — язык программирования, придуманный по приколу в начале 1970-х годов Деннисом Ритчи. Является на сегодняшний день самым низкоуровневым из языков высокого уровня (!), и предоставляет достаточно гибкие возможности по использованию ресурсов компьютера.

Многие почему-то считают, что Cи мёртв. Когда-то на нём писался практически весь софт, и понятие «быть программистом» обязательно включало в себя «знать Си». Сейчас, конечно же, это не так, и Си успешно выпилили практически из всего прикладного программирования. Но Си никогда не умрёт, пока есть микроконтроллеры и нужно писать драйвера! Да и вообще, вероятность того, что ты так или иначе пользуешься Си-шным кодом в хайтек-мире близка к абсолютной. Компьютеры, телефоны, планшеты, терминалы… внезапно, даже некоторые шибко умные микроволновки — везде есть программы на Си.

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

Только для этого надо…
… указать на участок памяти, где лежит нога, по смещению наложить структуру, пройтись по её полям и прямым преобразованием типов (динамического тут нету) передать данные функции «выстрелить». Если что-то произойдёт не так, дадут циферку с номером ошибки. Или не дадут, если функция — void. Да, try-catch конструкций тут тоже нет. Ну, то есть, если вы, конечно, хотите, то есть long jump… и даже вроде как есть библиотеки с готовыми реализациями исключений а-ля C++… Тысячи их, и все говно.

Есть, конечно, некоторые проблемы. Бородатые системные программисты, единственные, кто ещё умеет писать ядра операционок, драйвера и системные службы, демонстративно отказываются учить что-то ещё. На самом деле, любой уважающий себя Си-шник знает не только С и С++, но и ещё с десяток других языков, главным образом для того, чтобы их обсирать. А на Си они любят писать потому, что код в таком случае получается короче и прямее. Поэтому ядра и драйвера в их пространстве пишутся только на Си, и ни одного на Perl’е или, упаси Боже, PHP. Это злостный цинизм и несправедливая конкуренция. А системные службы написаны на Си чуть менее, чем все.

ТруЪ Си бешено любим многими, но также и люто ненавидим еще более многими.
Ведь на том всё и заканчивается: ООП, динамика, метапрограммирование — всё это реализовали в родственниках и потомках. Среди программистов носит неофициальный, и вполне заслуженный, титул «кроссплатформенного ассемблера». Ответственность за корректную работу программы целиком и полностью лежит на программисте, за что Си и ненавидим быдлокодерами и, что важно, их начальством.
Хорошо мотивированного project manager’а, писавшего когда-то в патлатой молодости на Java, можно легко ввести в ступор, предъявив часть проекта на Си.

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

Кое-кто ехидно предполагает, что наличие хоть какого-нибудь вменяемого exceptioning’а в Си могло бы исключить появление BSOD в 90-х.

Ещё я вас порадую классным видео в тему:

И тем, что Си борется за место самого популярного языка программирования и идёт почти наравне с Java! Пруф

От себя могу добавить, что я изучал в своё время Си исключительно just for lulz, но до сих пор считаю его одним из лучших — ведь он предоставляет широчайшие возможности разработки. А ещё он заставляет не просто строчить код (работает — и ладно!), а действительно думать. Поэтому на Си реализовать можно (почти) всё, что может сделать компьютер — ограничений почти нет, только ваша фантазия!

Пожалуй, это всё, что я хотел сказать.
Так что решать — учить Cи или, всё же, не учить — решать Вам и только Вам.

Вам также может понравиться...

1 комментарий

  1. lis.kretov говорит:

    Подскажите у нас в городе, есть специалисты, которые могут «подружить» УКП-66 (UKP-66) с подъездным домофоном

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *