Дорога в тысячу ли
Mar. 5th, 2019 08:45 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Программизма псто.
В интернетах живо обсуждают пост Эрика Ниблера о ranges in C++. Одни радуются что наконец в С++ появляются какие-никакие современные элементы программирования. Другие сокрушаются тем, что современное программирование на С++ - обло, озорно, огромно, стозевно и лаяй.
На своей новой работе я впервые за очень много лет вылез из среды С/С++ и вот что мне подумалось.
С++ это как китайский язык. Надо учить всю жизнь только для того, чтобы оставаться грамотным. Месяц не практиковался в чтении и письме и всё, потом год нагоняешь, а то и рискуешь вернуться откуда начал. При этом из-за сложности языка все силы ума уходят на него, а на другое уже ничего не остаётся. Оттого у фаната С++ вид всегда восторженный и молодцеватый. В то время как в индустрии уже давно космические корабли бороздят просторы, в С++ люди ковыряют мейкфайлы в виме и страшно горды своим эзотерическим знанием.
Как однажды сказал один человек с которым я работал: китайский язык очень сложно выучить, но зато если сможешь, то потом три раза в день бесплатно кормят. Вот именно.
В интернетах живо обсуждают пост Эрика Ниблера о ranges in C++. Одни радуются что наконец в С++ появляются какие-никакие современные элементы программирования. Другие сокрушаются тем, что современное программирование на С++ - обло, озорно, огромно, стозевно и лаяй.
На своей новой работе я впервые за очень много лет вылез из среды С/С++ и вот что мне подумалось.
С++ это как китайский язык. Надо учить всю жизнь только для того, чтобы оставаться грамотным. Месяц не практиковался в чтении и письме и всё, потом год нагоняешь, а то и рискуешь вернуться откуда начал. При этом из-за сложности языка все силы ума уходят на него, а на другое уже ничего не остаётся. Оттого у фаната С++ вид всегда восторженный и молодцеватый. В то время как в индустрии уже давно космические корабли бороздят просторы, в С++ люди ковыряют мейкфайлы в виме и страшно горды своим эзотерическим знанием.
Как однажды сказал один человек с которым я работал: китайский язык очень сложно выучить, но зато если сможешь, то потом три раза в день бесплатно кормят. Вот именно.
no subject
Date: 2019-03-06 12:26 am (UTC)// A BOT Scala:
$ amm
Loading...
Welcome to the Ammonite Repl 1.6.3
(Scala 2.12.8 Java 1.8.0_181)
If you like Ammonite, please support our development at www.patreon.com/lihaoyi
tmp@ def triples(n: Int): Seq[(Int, Int, Int)] =
for {
z <- 1 to n
x <- 1 to z
y <- 1 to x
if x*x + y*y == z*z
} yield (x, y, z)
defined function triples
tmp@ triples(20)
res1: Seq[(Int, Int, Int)] = Vector((4, 3, 5), (8, 6, 10), (12, 5, 13), (12, 9, 15), (15, 8, 17), (16, 12, 20))
no subject
Date: 2019-03-06 10:32 am (UTC)no subject
Date: 2019-03-06 10:37 am (UTC)no subject
Date: 2019-03-06 10:39 am (UTC):)
no subject
Date: 2019-03-06 11:21 am (UTC)Я главного не могу понять: нахрена это всё надо? Я понимаю, что кто-то с этого диссертации пишет и курсы ведёт, но рабочим-то поням оно зачем? Мне всегда казалось, что С++ это способ писать относительно скоростные программы для стеснённых условий - память там, прошивка, чтобы исполняющий движок с собой не таскать. С функциональным программированием в диком синтаксисе эта задача сочетается чуть менее чем никак...
no subject
Date: 2019-03-07 08:41 am (UTC)Те же ренджи это нужная и полезная фича. Если б ещё нормальые корутины сделали (yield), то тоже было бы замечательно. Но я считаю что такие вещи должны поддерживаться нативно языком, а не вот этим темплейтным ужасом.
no subject
Date: 2019-03-07 12:30 pm (UTC)Что я вижу в этой рекламной статье - чудовищно переусложнённый язык, очередная попытка впарить занятым людям функциональное программирование, и всё делается буквально через задницу (потому как yield это List<>, вывернутый мясом наружу). Ленивая/lazy раздача означает, что все эти итераторы будут бесконечно долбить друг друга в ухо в поисках содержимого. А вызов функции денег стоит, между прочим.
Я именно что не понимаю - зачем. Вместо процедурки на десять строчек наваяли два листа нечитаемой каббалистики, чтобы... чтобы что? Вот не будем перечислять недостатки ренджей, поищем достоинства. Чего добились-то?
А кто хочет бинарной совместимости, нормальных дженериков и встроенные колбеки, тому следует писать на джаве. :-)
no subject
Date: 2019-03-06 04:25 pm (UTC)Ranges конечно шикарный пример как на C++ писать так чтобы гарантированно разрывать мозг. Может где-то к C++30 и упростят его. Или наоборот, добавят гарантированности, тут как стандарт ляжет :)
no subject
Date: 2019-03-07 08:37 am (UTC)no subject
Date: 2019-03-05 02:35 pm (UTC)С тех пор как я написал последний относительно серьезный кусок кедра на С++ прошло лет 7. Думаю что читать на С++ я смог бы и сейчас. А вот если писать, то уже вряд ли. В общем жалею, что такой полезный для трудоустройства skill утрачен. Но тому что больше писать не надо очень рад. Временами это была чистая мука.
no subject
Date: 2019-03-05 09:54 pm (UTC)no subject
Date: 2019-03-06 09:09 am (UTC)Те места, где меня спрашивали по С++ (в Сиднее) можно разделить на три неравные группы:
1) трейдинг - им, по большому счёту, наплевать на технологии. Компании надо делать деньги, а что там будет за технология, вопрос вторичный. Так сложилось что в таких компаниях много фанатов С++. Может потому что им больше особо некуда идти в Австралии?
2) легаси - всякие динозавры, какие-то в оборонке, какие-то в иншуре и прочих древних платформах. Кладбище с живыми мертвецами.
3) очень редкие исключения, где делают интересныеж технологии и продукты и на С++ - на весь Сидней таких, наверное, по пальцам пересчитать.
В итоге я после 20+ лет на С++ впервые решил пойти на работу где нет С++. Может сделал ошибку, будущее покажет, но пока что не очень страдаю. Вернее страдаю от того насколько я отстал от остального мира.
no subject
Date: 2019-03-05 06:07 pm (UTC)no subject
Date: 2019-03-05 10:03 pm (UTC)no subject
Date: 2019-03-06 12:44 am (UTC)no subject
Date: 2019-03-06 12:52 am (UTC)И преимущество той или иной приспособы доказывается на специально подобранных задачках, что бы преспособа за которую давит правильный человек показала правильные результаты
no subject
Date: 2019-03-06 09:30 am (UTC)На каком языке написан браузер, которым вы пользуетесь?
no subject
Date: 2019-03-06 09:46 am (UTC)не важно чего пользователь хочет, важно за что платят заказчики.
>На каком языке написан браузер, которым вы пользуетесь?
Обоснуй вопрос. Ну или хоть намекни, каким боком мой браузер касается обсуждаемой темы.
no subject
Date: 2019-03-06 05:06 pm (UTC)Имеем многолетнюю конкуренцию регулярно обновляющихся приложений, стремящихся выжать максимум производительности и функциональности из одного и того же парка машин. За это время способ достижения близкого к оптимуму соотношения стоимость/производительность обычно бывает найден, в отношении используемого языка программирования - в частности. Узнав, на каком языке написаны браузеры, мы выясним, какой язык крупные игроки считают близким к оптимуму для написания проектов подобного размера и с подобными требованиями. Так на каком же?
no subject
Date: 2019-03-07 06:26 am (UTC)Чуть более серьезно: браузерописание, это такой мизерный процент от все того чего пишут, что мне даже не удобно серьезно на это отвечать.
no subject
Date: 2019-03-06 08:58 am (UTC)* С++, на котором это пишут, скорее С++ 98, да ещё и с кастом решениями вместо стандартной библиотеки. При этом после какого-то размера проект всё равно превращается в ужас-ужас. Я уже склоняюсь к тому, чтобы согласиться с Торвальдсом - ради производительности уже пишите на С, лучше будет.
* Если писать на т.н. "modern C++", вот на таком как в посте у Эрика, то производительности очень даже может уже и не оказаться.
* С++ всё сильнее уходит в нишевые области. А нам в своё время его продали как general purpose language. Для общих целей С++ всё менее и менее адекватен. Кто в здравом уме будет писать код в продакшен как вот это вычисление с ranges? И насколько это проще и элегантнее выглядит на других языках.
no subject
Date: 2019-03-06 09:26 am (UTC)Если писать на modern C++, то для достижения оптимальной производительности может понадобиться profile feedback, но это современные компиляторы уже умеют.
Если львиную долю индустрии, от финансов до игр со всеми остановками посередине, считать нишевыми областями, то да.
В конце концов, на каком языке написаны браузеры, которыми мы все пользуемся?
no subject
Date: 2019-03-06 10:20 am (UTC)Мне кажется что С++ сейчас стоит перед неким распутьем: или он будет модернизироваться и улучшаться как язык (скорее всего с потерей backward compatibility), или его преимущества просто перестанут играть роль пред лицом цены и скорости производства на нём.
Сегодня браузер написан на С++ во многом из-за легаси: написать качественный движок для браузера уже сравнимо с написанием ОС.
no subject
Date: 2019-03-06 05:16 pm (UTC)Понятно, что эксперименты, прототипы и пр. на С++ писать нет смысла; для этого питон есть.
У гугла, майкрософта или эплла достаточно денег. Если бы движок браузера было выгодно однажды переписать на языке программирования более высокого уровня (отчего объем кода, скорее всего, в несколько раз сократился бы, облегчая и удешевляя всю последующую поддержку) с улучшением или хотя бы сохранением производительности и требований к памяти, то это уже давно было бы сделано.
no subject
Date: 2019-03-07 08:33 am (UTC)no subject
Date: 2019-03-06 10:13 am (UTC)no subject
Date: 2019-03-06 10:21 am (UTC)