Программистов на С могут признать малым этносом
Сегодня, 26 апреля 2016 г., арбитражный суд Орловской области должен был решить вопрос, является ли язык программирования C иностранным языком.
Столь необычным вопросом суд озаботился из-за Федеральной антимонопольной службы (ФАС), которая возбудилась вот на это объявление, размещённое напротив местного политеха:
Нужно заметить, что признание судом языка программирования C иностранным языком позволит программистам на C бороться за официальное признание себя в качестве малого этноса. Малый этнос — это уже не обычное профессиональное сообщество, а народ. Народ же, не имеющий своего государства, может воспользоваться правом на самоопределение, записанным во Всеобщей декларации прав человека ООН.
Подробнее
if (need_job && have_skill) { goto Stork; } О STORK ул. Гагарина, 9 +7 (910) 748-25-05 job@stork.ru
geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,программирование,правосудие,реклама,рекламные фото приколы
Еще на тему
В результате вместо решения задач, вся команда решает головоломки, как правильно и "красиво" написать фитчу отвечающую концепции проекта, так, чтобы она ещё и сломала ничего ни в одном из 2^64 кейсов которые могут возникнуть на с++.
В 2016 у языка реально не осталось сферы применимости:
Тебе писать веб-фронты - у тебя есть JS
Хочешь писать гигантские проекты с кучей человек - C# или Java
Хочешь писать системный код - бери голый С
Хочешь быть молодым и прогрессивным - бери rast и scala
Хочешь быстро накидывать что-нибудь - бери python
Тебе нравится академические фокусы - у тебя всегда останется lisp и haskell
И можно долго продолжать. Зачем в 2016 тебе с++, я ума на приложу. Может затем, чтобы можно было днями играться со своей любимой игрушкой из детства, вместо создания проекта, который делает что-то реальное в поставленные сроки.
А вообще все эти рассуждения "в с++ это плохо, то не понятно" звучат как "доктор, у меня болит колено, если бить по нему молотком". Не нравится тебе множественное наследование? Не используй. Не нравятся шаблонные шаблоны шаблонов? Нафиг их. Перегрузки не очевидные? Ну так не перегружай. На С++ запросто можно писать в стиле Java, но это шаг лет эдак на 20 назад.
2. "с++ это не непонятно" с++ это слишком многогранно для того, чтобы над одним проектом могло трудиться более 2 человек одновременно. Что толку если я использую "хороший с++", но человек за соседним столом имеет свой собственный с++. Нам всё равно использовать наработки друг друга и в этом месте мы будем есть камни каждый день. А если в команде 100 человек? Сколько организационных ресурсов нужно потратить на то, чтобы вычленить необходимый и достаточный кусок с++, а потом железной рукой заставлять либеральных по своей сути котов, использовать только эту часть? Лезть в душу к 40 летним мужикам и рассказывать как они должны теперь делать свою работу, когда они уже всё на свете знают, а ты вообще кто такой?
2) Вопрос уже плавно переходит из области обсуждения ЯП в область проектирования. Если архитектура проекта нормально проработана то я даже и знать не буду как пишет человек за соседним столом.
2) Я изначально критиковал с++ как язык, за невозможность организовать на нем работу команды, которая проистекает из того, из-за обилия концепций у каждого свой с++. С доводом, что при нормальной архитектуре ты ничего не должен знать о работе соседа - я категорически не согласен.
То что должна быть нормальная модульность и продуманное взаимодействие между вами, чтобы вам не приходилось писать один и тот же код параллельно - это да. Но твои комиты обязаны проходить ревью или лида или хотя бы человека за соседним столом. Договоритесь о деталях взаимодействия, вы тем лучше , чем лучше представляете чем каждый занят. Да и вообще жизнь непростая штука, ты можешь быть позарез нужен на другом проекте, уволиться, попасть в аварию. Что делать потом с твоим кодом? Конторе закрыться теперь? Ситуация при которой ты мастер джедай, и тихонечко пишешь в своём шкафу всё так как тебе нравится выбирая любимое из всего с++, это никому вообще не надо. Для этого все пытаются определить рамки, установить в компании гайды и так далее, для с++ это сделать очень тяжело, он старый, большой и взгляды на него у людей разные категорически.
И как противоположность есть исходники Qt(на страшном С++ который знают два с половиной человека). Так вот в них даже комментариев нету. Один раз только видел такое: exti(); //goodbye cruel world. И при этом код читается как книга.
Так что тут претензии должны быть не к языку, а к программистам
1. бывший опытный адепт буста,
2. бывший опытный мид из мира QT фреймворка,
3. бывший геймдев любитель темплейто-макросных макарон, множественного наследования, перегрузки операторов и преждевременной локальной оптимизации.
4. молодой подающий надежды студент, участник алгоритмических соревнований, любитель быстрого и дешевого кода с STL.
Отлично я могу заставить всех работать на каком-нибудь C#/java. А как начинаются рассуждения за с++, это всегда срач на пол часа. Срачи с++ тупо запрещены и считаются саботажем.
Чтобы было, если бы мы правда на с++ писали один проект - страшно даже подумать.
Другой пример: уже много лет слышу мнение — php вот-вот умрёт. А он, зараза, не только не умирает, но и развивается нехило. 5.2 по сравнению с четвёртым уже вполне нормальный объектно-ориентированный язык, а седьмой по сравнению с пятым — небо и земля. Ещё и инфраструктура вокруг языка вполне к энтерпрайзному уровню приближается.
Так что не надо торопиться хоронить любую технологию до тех пор, пока на ней столько всего держится.
Вот представь: человек 30 лет писал на языке, на котором ну вот так дохрена столько всего написано. На каком языке он начнёт новый проект? Аналогично контора, у которой сложившаяся команда программеров. Да, те, кто только начинают программировать, могут послушать хороший совет (или случайно выбрать) и начать с питона, жабы, шарпа. Да, есть опытные плюсовики, которые хотят сменить технологию. Но это всё в любом случае очень небыстрый процесс. Плюсы давно уже выбрались на самоподдерживающийся уровень популярности.
P.s. Про фортран я в курсе :)
На конференции C++ Siberia:
Как вы пишете тесты для статического анализатора кода? У вас есть специальная команда разработчиков, которая пишет говнокод? А там есть вакансии?
А то радио Радонеж тоже может какие-нибудь хитпарады составлять, но кому они будут интересны?
Погромисты всех стран, объединяйтесь!!!
Т.о. goto, точнее его положение в языке поднимает Си на уровень именно что Настоящего Языка, который как известно делает население — народом.
В остальных случаях отпиздить человека кочергой за goto - важно и нужно ибо нехуй.
https://github.com/Cyan4973/lz4/blob/master/lib/lz4.c
Используется почти везде: http://cyan4973.github.io/lz4/
Просто я к тому, что автор известный, и библиотека известная. И никто не считает зазорным испозьзовать goto, чтобы выиграть немного в производительности.
Хотя код у него читать весьма сложно. Функция на 200 строк, истыканная goto, может кого угодно до слез довести
Это тот самый случай, когда именно из-за производительности goto и использовали.
Добавление одно лишнего условию куда нибуть в луп может приветси к серьезному ухудшению производительности из-за того что любой условный переход это как минимум потенциальный branch miss-prediction.
Был бы это фиговый код, его бы не использовали:
Linux, FreeBSD, SmartOS, GNU Grub, Hadoop, Spark, Cassandra, MySQL, RocksDB, Redis, Battle field 4, NVidia, Mozilla, Facebook... там список намного длинее.
Почитайте блог: http://fastcompression.blogspot.fr/ посмотри на каких вещах автор заморачивается. Уж отрефакторить ему было бы точно не лень.
goto почти никогда не используется, но в паре случаев без него не обойтись:
1. При обработке ошибок внутри длинной функции - даже в очень крутом коде можно встретить "goto error", за которым следует "освобождение награбленного". В более высокоуровневых языках на этот случай сеть exception-ы
2. Если вы имеете 5 вложенных циклов и во внутреннем вам приспичило покинуть 3 из 5, например. Можно ставить флаг и выходить break-ом по одному, но проще (и эффективнее) сделать goto. В Java, где goto запрещен совсем, на этот случай есть конструкция вида "break "
Во-вторых, в байткоде goto есть, и в некоторых компилируемых в этот байткод языках таки goto вполне может быть. Я уже не говорю, что можно использовать свой компилятор(или надстройку/подстройку) с бдэкджеком и гоуту, или вообще патчить байткод(он у джавы простой, приходилось, правда, не из-за гоуту).
Проблема не в самом операторе, а в том, что неофиты могут нагородить такого с goto, что потом три команды сеньоров не разгребут. Потому лучше не сто́ит его разрешать даже в С.
Просто всегда нужен какой-то козел отпущения, что-то, на что можно валить все плохое. В мире программинга вообще - это goto. Ну и, конечно же, миддлы упорно гордятся тем, чем не используют goto - им больше гордиться, в общем-то, нечем...
долбанная разметка
STATUS status;
a1 = alloc(...) или init(...)
if (some error) {
log("blah blah blah");
status = SOME_ERROR_STATUS;
goto ERROR_1;
}
...
aN = alloc(...) или create(...)
if (some error) {
log("blah blah blah");
status = SOME_ERROR_STATUS;
goto ERROR_N;
}
....
return status;
ERROR_N
free(aN-1) или delete(aN-1)
...
ERROR_2
free(a1) или delete(a1)
ERROR_1
return status;
}
В СИ нет исключений как конструкции языка и стандартной практики. И это из нашей практики наиболее простой изящный и короткий способ в случае любой ошибки освободить лишь те ресурсы которые ты успел занять. Он достаточно строгий и не имеет ничего общего с бесконтрольным запутыванием код флоу расстановкой goto в произвольных местах. В нем действительно есть смысл если ты пишешь серьезный код и пытаешься обработать все возможные ошибки включая нехватку памяти, а не напросто набрасываешь дерьма с совковой лопаты, абы завелось и прошло мейн пасс.
Там это тоже в StyleGuide прописано
МВАХАХАХАХА
Там глубоко в PDF'ках все есть.
Шутка каких то 2006-2008 годов из ММО EVE online - поймет только тот кто в теме, кто не в теме - объяснять что то бессмысленно.
Там жаргон тоже перерос в свой язык - новички плачут кровью когда читают ненужные гайды по фиттингу шипов, кровь из ушей у карибасов на КТА, ФК орет непонятные слова какие то праймори и секондари, какие то бидоны и бобры, хурики и дряки. МММ Ностальджи.
Хорошая попытка EVE, но нет...
Всё.
Магия разрушена?
… о/, харош кемпить на гейте, точку в алли я заинвайчу в ганг и варп на гейт ЕЦ, проваливаемся и на меня в ноль, я на мальке, держу апок, меня дроны пилят.
Перевод на русский язык: (примерный)
Привет (о/ - голова и поднятая рука - приветствие ), предлагаю свернуть Вашу засаду возле звёздных ворот, отметьтесь в альянсовом чате (как правило игроки ставят в чате точку или Х) я внесу вас в список моего флота, а Вы совершайте гиперпрыжок к звёздным воротам ведущим в систему EC-P8R, по приходу к воротам активируйте их. Когда будете в системе, найдите меня в списке флота и приблизьтесь ко мне (состоящие во флоте бойцы могут находить друг друга без специальных сканеров и зондов), я на корабле класса Malediction с помощью прибора электронного воздействия не даю вражескому линкору уйти в гиперпрыжок, его дроны наносят урон моему кораблю.
если (нужна_работа И есть_навыки) {
иди_в _1С
}
if(!find_work()){
take_money(parents);
buy(diploma);
}else{
working();
}
}
Если (нужна_работа И есть_навыки) тогда
Перейти в_1С;
КонецЕсли;
Это английский язык. Ни шрифты, ни грамотность написания законодательство не ебут.
Какой нахуй си?
Икс-игрек-знак высшей математики на доске в аудитории являются частью формулы, но они же, написанные на заборе, являются вандализмом.