Частота использования ругательных слов в отношении языков программирования на реддите за 2018 год / php :: javascript :: it-юмор :: Это не шутка :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

geek it-юмор javascript php Это не шутка 

Частота использования ругательных слов в отношении языков программирования на реддите за 2018 год

mathematics
visualbasic
haskell
rust
clojure
programming
matlab
lua
swift
scala
objectivée
golang
perl
lisp
esharp
sql
epp
python
ruby
java
javascript
php
TTT
IE
~1~1 r
_r r f
I I r
W
1 T
1 E
1 r
I I
I I
I I
W
1 E
1 E
0
I ,	,1
100	150	200
contains word /
Подробнее
mathematics visualbasic haskell rust clojure programming matlab lua swift scala objectivée golang perl lisp esharp sql epp python ruby java javascript php TTT IE ~1~1 r _r r f I I r W 1 T 1 E 1 r I I I I I I W 1 E 1 E 0 I , ,1 100 150 200 contains word / 10000 comments I I crap 1^ fuck I I hate [ZZ1 shit 50 250 300
geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,it-юмор,javascript,php,Это не шутка
Еще на тему
Развернуть
Пфф, был бы здесь Prolog...
Там же написано "языков программирования"
ligery ligery 31.12.201801:38 ответить ссылка 17.5
Это такой же язык программирования. Если покурить его примерно месяцок то понимаешь что он вырождается в процедурный из за некоторых фич именно пролога
похоже по mathematica был один коммент с crap и один c hate
koka koka 31.12.201800:17 ответить ссылка 14.0
Скорее всего это был один и тот же коммент.
это бы единственный коммент на всем сайте и он был от создателя языка
recoon recoon 31.12.201811:14 ответить ссылка 2.9
"I hate this crap"?
На 1000 комментов? Получается, это удельная частота ругательств, т.е. не зависит от общего кол-ва упоминаний языка?
да, только на 10 000 комментов
koka koka 31.12.201800:25 ответить ссылка 2.0
JavaScript+php+mysql = образованный человек xD
с каких пор SQL стал языком программирования? или имеется в виду PL/SQL?
Heralt Heralt 31.12.201801:32 ответить ссылка -1.4
SQL is a domain-specific language is a computer language specialized to a particular application domain.
GxocT GxocT 31.12.201801:35 ответить ссылка 1.2
Внезапно это так, и там реально что то можно делать.
Аха! У cpp больше чему у csharp!
Fedya Fedya 31.12.201803:02 ответить ссылка -0.6
Ничего удивительного. В cpp прогер заботится о памяти, в до-диезе - .net и сборщик мусора. Да и вообще, цэпэпэ, считай, самый сложный из высокоуровневых по части вхождения и изучения фич.
Как я много раз объяснял, сложность С++ заключается не в С++.

В плане синтаксиса С++ в общем-то ничего особенного по сравнению с любым другим современным языком. Разница находится снаружи. Когда ты пишешь на каком-нибудь managed-говне, всё что тебя заботит - это твоя собственная прога, а все техники оптимизации заключаются в том, чтобы запускать сборщик мусора пореже. Программиста на С++ заботит не только собственная прога, а то, чтобы получить именно на выхлопе наиболее быстро выполняющийся на железе код. Для этого нужно знать особенности работы железа, как ядра обмениваются кэшированными данными чтобы гонять твоё даже однопоточное приложение на разных ядрах, как читается и алигнится память, как минимально ветвить программу чтобы конвейер проца не простаивал, и выхватывал максимальное опережение чтобы данные были готовы к моменту выполнения, где разместить барьеры памяти, чтобы синхронизация кэша с памятью проходила максимально гладко и быстро, и прочие выкрутасы, благодаря которым код на С++ железо жамкает резвее, как бы managed-говны с виртуальными машинами не пыжились. Всё это заставляет специалиста по плюсам знать не только железные дела, но и разбираться в тонкостях ОБВМ того, кто этот код генерирует - компилятора, и писать код не для людей, а для компилятора, подстраивая программу под его внутренний мир с целью заставить его сгенерить то что нужно для наискорейшего выполнения железом.

tl;dr По вхождению плюсы не сложнее любого другого языка, но труден на профессиональном уровне - мастер до-диеза печётся только о своём коде, в то время как мастеру плюсов приходится знать внутренний мир железа и ублажать компилятор, получая в качестве вознаграждения код, который способен работать до 40 раз быстрее полного аналога на до-диезе за счёт срезания железных углов, что и продолжает обеспечивать плюсам место под солнцем в нише продуктов требующих высокой оптимизации.
Loser2 Loser2 31.12.201807:01 ответить ссылка 2.2
Не знаю, зачем тут такая стена текста, ресурс не айтишниковский. Если это попытка объяснить мне что-то касательно плюсов - спасибо, но я и так жру кактус в виде разработки на крестах с использованием Qt Framework.
Когда я пишу стену текста, она выглядит так: http://joyreactor.cc/post/3723581

А это так, утренняя разминка.
Loser2 Loser2 31.12.201807:58 ответить ссылка -1.0
все это прикольно, конечно, и даже в плане профессионализма круто.
но зачем?
SiN2712 SiN2712 31.12.201811:06 ответить ссылка -0.2
Потому что он может.
> А это так, утренняя разминка.

По вхождению плюсы не сложнее любого другого языка, но труден на профессиональном уровне - мастер до-диеза печётся только о своём коде, в то время как мастеру плюсов приходится заходить в каждый топик о программировании на любом ресурсе и ублажать своё ЧСВ.
arkham arkham 31.12.201820:11 ответить ссылка 0.6
Заказов на C++ со знанием внутренностей всё меньше. Народу всё больше требуются игры с рекламой под смартфоны, сайтики и прочие мелочи под языки с GC.
Свободного времени у профессионала по возне с низким уровнем становится всё больше - можно писать длинные портянки в интернетах.
cpp, имхо, на 80% сложен не тем, что он низкоуровневый и там, соответственно, есть прямой доступ к памяти, а ещё тем, что ему сто лет в обед и он состоит из сплошного легаси. В итоге овладеть целиком языком - за гранью добра и зла. Каждый кодер владеет своим суржиком плюсов. Вот сравни плюсы с ныне почти почившим Object Pascal\Delphi. Ну чего там в Delphi учить? А ведь указатели на месте, выделение памяти и её освобождение на месте, деструкторы всякие тоже. ООП тоже на месте.

А вообще, у меня лично, психологическая травма, после того как я стал гуглить, как же передать по ссылке в какой-либо метод двумерный массив произвольной длины (cpp 98). Увиденное не развидеть.
faiwer faiwer 31.12.201809:11 ответить ссылка 2.8
Что ты блять несёшь?

С++ легаси... где вы его находите? Сколько лет работаю, а ни одного прям легаси легаси ни разу не встретил. С++ в принципе не майнтенабелен, поэтому легаси проекты на нём просто не живут. А суржиком пишут там, где нет стандартиста, способного вкатить нерадивым суржикописцам двести кубиков последнего стандарта.

Делфи имхо был мертворождённым, но из-за богатой практики некрофилии поцкаля в отечественных вузах, его труп некоторое время ходил и ел порядочным людям моск. После чего собственный раздувающийся рантайм погубил и его тоже.

> как же передать по ссылке в какой-либо метод двумерный массив произвольной длины (cpp 98)

Оборачиваешь в класс, передаёшь ссылку на класс. А если есть криворукие, то вообще закрыть нахуй прямой доступ к данным без особой надобности. Я лично в дизайне интерфейсов придерживаюсь правила, что ввод от живого человека будет совершенно произвольным, и возможность прицелиться в ногу нужно отключить by design.
Loser2 Loser2 31.12.201813:33 ответить ссылка -1.4
Ась? Я же не про legacy-код на CPP. Я про сам CPP. Он сам legacy. Именно язык. Раздутый и чрезмерно сложный. Причём сложный за зря. Я понимаю когда говорят, что haskell сложный, там есть чему быть сложным. А тут... Честно говоря, из всех языков, с которыми я хоть как-то сталкивался - самый отвратительный это CPP. Разве что после brainfuck-а.

Кстати делфи я привёл как пример языка, который не ебанутый. Довольно простой и понятный. А не как пример офигенного продакшн решения. Как пример что те же самые задачи можно решать на языках, спецификация на которые меньше размера видимой части вселенной.

> Оборачиваешь в класс, передаёшь ссылку на класс

Да, я в итоге всё обернул в struct и таскал этот struct туда-сюда. Для моих говно-нужд хватало.
faiwer faiwer 31.12.201813:50 ответить ссылка 2.6
> Ась? Я же не про legacy-код на CPP. Я про сам CPP. Он сам legacy. Именно язык. Раздутый и чрезмерно сложный. Причём сложный за зря. Я понимаю когда говорят, что haskell сложный, там есть чему быть сложным. А тут... Честно говоря, из всех языков, с которыми я хоть как-то сталкивался - самый отвратительный это CPP. Разве что после brainfuck-а.

Ситуация примерно десятилетней давности. Сейчас делфятина это вот как раз Ъ-легаси, а С++ регулярно обновляющий стандарт современный язык.

> Кстати делфи я привёл как пример языка, который не ебанутый. Довольно простой и понятный. А не как пример офигенного продакшн решения. Как пример что те же самые задачи можно решать на языках, спецификация на которые меньше размера видимой части вселенной.

Зачем приводить мёртворождённое говно? Язык нужно выбирать под задачу, это так, но если в задаче производительность или железные ограничения стоят первой или второй строчкой, то у тебя нихуя нету выбора.
Loser2 Loser2 31.12.201813:57 ответить ссылка -2.7
> Ситуация примерно десятилетней давности

Поставь себя на место ньюфага. Несмотря на то, что появились вкусные новые штуки, старые некуда не делись. И работать с ними всё равно придётся. И спрашивать с тебя их будут. Полжизни будешь язык учить.

> Зачем приводить мёртворождённое говно?

Трудный ты. Я тебе в пример привожу не язык+экосистему, а именно язык. Т.е именно подход. Я тоже не люблю Delphi. И я знаю что он сдох. Ну почти сдох. Я блин не об этом же пишу. А о том, что он простой и умеет почти всё тоже самое. Он яркий пример того, что дело не в задачах, дело в спецификациях и тех кто их пишет. Ну и в легаси, конечно.

> "у тебя нихуя нет выбора"

По сути это главный аргумент за CPP. Почти единственный. Что в прочем сам язык не красит.
faiwer faiwer 31.12.201814:07 ответить ссылка 2.0
> старые некуда не делись.

Ты опять же не в теме. Список депрекейтов на каждую новую версию стандарата весьма красноречив.

> По сути это главный аргумент за CPP. Почти единственный. Что в прочем сам язык не красит.

Зато весомый. Погляди на ААА проекты с бюджетами. Они могут позволить себе любых специалистов на любом языке, и руководит ими обычно не сова-эффективный-менеджер. Тем не менее, они выбирают С++.
Loser2 Loser2 31.12.201814:28 ответить ссылка -2.4
как же любят плюсовики игры вспоминать. почему ж тогда каждая новая игрушка требует нового более мощного железа? чо ж системные требования вниз не растут?
ебеные числодробилки в игры не добавляют, какие-то супер-пупер вычисления тоже не часто встретишь. меняется только графоний, который задействует gpu. задачи плюс-минус сравнимые. а требования и по опере и по процу растут ровно так же, как и везде.
villy villy 31.12.201816:54 ответить ссылка 1.3
Постпроцессингом обмазываться можно бесконечно, а он часто считается на CPU.
Hellsy Hellsy 31.12.201819:58 ответить ссылка 0.1
> cpp
> возможность прицелиться в ногу нужно отключить by design
ничего на напутал? :)

правильно чувак говорит, легаси. берем книжку времен расцвета плюсов и смотрим хотя бы на хелло ворлд, и берем новую книжку. в старой будет или сишный принтф, который небезопасен, или иостримы, которые тормозные пиздец и 40к строчек темплейтной магии тянут :) для хелло ворлда это конеш не критично, но зачем сразу привыкать к устаревшим методикам? и поэтому в новой книжке будет что-то другое. если вспомнили про юникод, то и вообще сторонняя либа.
в языке большинство исходных техник давно устарели, но не были выкинуты, и прогер вынужден помнить, где там грабли зарыты.
villy villy 31.12.201815:39 ответить ссылка 1.6
> С++ в принципе не майнтенабелен, поэтому легаси проекты на нём просто не живут.
Но C и C++ тянут обратную совместимость настолько, насколько это возможно.
Разработка на C/C++ слишком дорога, компиляторы языков с GC производят такой же быстрый код, последний аргумент - совместимость со старым кодом - убрали.
Выходит, C и C++ не нужны?
> Но C и C++ тянут обратную совместимость настолько, насколько это возможно.

Прежний подход ушёл в прошлое, теперь либо ты компилишь старым компилятором (dynamic linking никто не отменял), либо обновляешься и убираешь старьё из кода.

> Разработка на C/C++ слишком дорога

Тем не менее всё ААА выбирает С++ (не очень люблю когда очень разные языки С и С++ упоминают вместе, а Линус за это так вообще нахуй посылает).

> компиляторы языков с GC производят такой же быстрый код

Ну-ну, мечтатели. То-то в ААА видимо совы-эффективные-менеджеры выбирают С++, если есть такие же быстрые альтернативы... нет, пока что манагед-говны даже не близко, и скорее всего никогда не будут близко к написанному грамотным человеком С++ коду.

> последний аргумент - совместимость со старым кодом

не помню чтобы это когда-то было аргументом в принципе.

> Выходит, C и C++ не нужны?

Дуракам они определённо не нужны, дураки в них стреляют себе в ногу.
Loser2 Loser2 02.01.201922:01 ответить ссылка -0.1
Сколько у нас AAA, а?
Секретную гравицапу для арабских шейхов может прямо в машинных кодах пишут, и что?
Ниша C/C++ всё меньше и меньше. Платят не за знание многостраничного стандарта, а за работающую программу.
Только дурак хвалится тем, что виртуозно уворачивается от старого ружья, которое сам крутит в руках, когда можно взять самонаводящиеся ракеты и все проблемы победить.
leosdren leosdren 03.01.201915:20 ответить ссылка -0.6
Про сужающуюся нишу - это тоже старые песни десятилетней давности. Песняры собрали просмотры, ниша никуда не делась, собака лает, караван идёт. Никуда не делись операционки, написанные и расширяемые на плюсах, никуда не делись консоли, где альтернативы собственно просто никогда даже и не предполагалось, никуда не делся научный софт, запили мне физический солвер на манагед-говнах, вместе посмеёмся над его производительностью.

А дураки продолжают петь про сужающуюся нишу, в которую вот-вот попадут их ракеты.
Loser2 Loser2 03.01.201915:31 ответить ссылка 0.0
Операционки, консоли... О да, каждый второй программист этим занимается, чтобы у каждого жителя Японии было по операционке!

В науке (по крайней мере, в этой стране) не так много программистов, как хотелось бы. Зарплаты не те. Нельзя позволить просирать ресурсы на борьбу с C++. Медленно, но переходят на адекватные языки, на тот же python. А там уже куча готовых библиотек с C++ внутри. Или cython, если того мало. Разумеется, людей на разработку научных библиотек на C++ для python требуется намного меньше, чем требовалось бы, если бы все продолжали писать на C/C++.
> стал гуглить, как же передать по ссылке в какой-либо метод
до C++11 вообще нельзя было нормально передать как надо значение заранее неизвестного типа. Значение либо копировалось лишний раз, либо бралась ссылка на не лежащее нигде значение, и код не работал.
leosdren leosdren 02.01.201912:55 ответить ссылка -0.6
"Разница находится снаружи. Когда ты пишешь на каком-нибудь managed-говне, всё что тебя заботит - это твоя собственная прога, а все техники оптимизации заключаются в том, чтобы запускать сборщик мусора пореже. Программиста на С++ заботит не только собственная прога, а то, чтобы получить именно на выхлопе наиболее быстро выполняющийся на железе код".
Далеко не всем это нужно.
Мне кажется для многих доменов лучше освободить разработчика от железных вопросов. Например, та же связка C#+Unity3d в геймдеве кажется фантастически удобной.
Это та самая связка, которая радует нас таким беспросветным потоком говноигр?
"Это та самая связка, которая радует нас таким беспросветным потоком говноигр?"

В силу простоты освоения многие любители пробуют себя именно на Unity. Но на Unity пишутся также и ААА-проекты, и интересные инди-проекты.
На любом языке и движке можно делать говно. Вспомни сколько хлама выходило на UE3.
Unity3d написан на С++.

То что всё самое сложно написали за тебя, оставив тебя скриптовать сверху, причём на жабаскрипте, не отменяет глубокой зависимости от С++.
Loser2 Loser2 31.12.201813:38 ответить ссылка -0.6
Мне оставили удобный и мощный инструмент для создания того, что мне интересно, со спросом на рынке труда и без головной боли из-за памяти.

Что не отменяет того, что и C++ есть свои задачи.
Всегда удивлялся, почему именно память доставляет вам такую боль? Арифметика указателей слишком сложная?
Loser2 Loser2 31.12.201815:53 ответить ссылка -2.4
Потому что в большом проекте утечки памяти бывают даже в языках со сборщиками мусора.
Hellsy Hellsy 31.12.201820:00 ответить ссылка 1.6
Скажу по секрету, виртуальная машина явы и .NET тоже на плюсах написана. Тем не менее, я имею мощный инструмент, который позволяет не опускаться до небезопасной математики указателей.
Прямой доступ к памяти позволяет оставлять дыры вроде Heartbleed. На нормальном языке так накосячить просто невозможно.
Zhook Zhook 31.12.201810:14 ответить ссылка -0.2
1) Это вообще С а не С++, очень разные, хоть и внешне похожие, языки.
2) Инъекция в виртуальную машину с последующим хаком вообще всего что на ней бегает всяко лучше, да.
Loser2 Loser2 31.12.201813:34 ответить ссылка -0.3
На самом деле не так уж и сильно надо печься о железе - достаточно усвоить несколько базовых принципов (SIMD, шаринг кеша между потоками и т д) - они при этом достаточно универсальные, чтобы работать на любом железе (в том числе и на графических картах - хотя своя специфика там конечно есть). Есть некоторые извороты с использованием напрямую векторных функций, выравниванием данных, но есть библиотеки которые помогают с этим справиться (например Vc). Без них выравнивание памяти в С++ выглядит крайне всрато (если нельзя использовать С++17 В плюсах просто это все осложняется за счет ООП - модный хипстер-пидор насидевшись на своих C# напихает кучу говна на абстракциях, не задумываясь о том - что такое виртуальная таблица - и охуеет от просаживания производительности. Хотя может и не охуеет - моя первая программа на С++ была кривой как мое ебло, но работала в два раза быстрей чем на жабе с которой я работал уже несколько лет.

Щас работаю в области высокопроизводительных вычислений и пишу на ебучем фортране (потому что все пишут на нем). Те моменты, когда удается поработать с плюсами, воспринимаются как благословение божье
> пишу на ебучем фортране

В петлю не лезешь? )
faiwer faiwer 31.12.201812:03 ответить ссылка 0.7
осталось только диссертацию написать - дальше я буду уже работать над своим проектом)
Ну и зачем мне с этим мудохаться если заказчику нужен результат? Это как вместо того, что бы собирать машину из готовых частей каждый раз изобретать колесо, двигатель, рулевую систему и т.п. Да может быть твое колесо будет лучше ехать именно в этой местности(а может и нет), но время и усилия потраченное на разработку несоизмеримы с результатом.
А если требуемый результат это определенный уровень производительности? Говоря твоим языком - кто-то будет рад форд фокусу тольяттинского разлива, а кому-то Bugatti Veyron нужен. И новый спорткар спроектировать - это не форд фокус Zk19+ собрать - стандартными деталями сыт не будешь
Высокая производительность требуется в основном в контроллерах. Для десктопа она ставится на второй план. Потом она подпиливается микро-оптимизациями конкретных участков.
Интересно тогда почему существует область под названием "высокопроизводительные вычисления"? Да и опять же движки игровые пишутся на С++ (ладно возможно за исключением Unity - но мы знаем что он не шибко-то производителен). Конечно не каждый их пишет, но это не значит, что высокая производительность нужна только на контроллерах. Постановка производительности на второй план и привела к тому, что весь современный софт жрет бесконечное количество памяти при не сильно большом наполнении функциональностью.
Chaosit Chaosit 31.12.201812:40 ответить ссылка -0.5
Я не спорю, что С++ шустрее в некоторых задачах. Я лишь говорю, что не стоит пускать желчь в сторону управляемых языков. Все языки имеют свою сферу. Так если в сфере важен результат, а производительность, то управляемые языки- самое то. В игровой сфере и других, лидирует С++.
Я в общем-то и не пускаю желчи особо в сторону конкретных языков - я высказываю раздражение моделями програмиирования, подрузамевающих глубокие иерархии абстракций, от которых зубы сводит. От такого охуевают люди, которым достается такое наследство, охуевает рантайм, охуевает юзер от тормознутого продукта и охуевает поддержка, пытающаяся втереть очки юзеру.
Chaosit Chaosit 31.12.201814:46 ответить ссылка -0.6
а при чем тут глубина абстракций и производительность?
тащемта, чем больше у тебя метаданных о коде, и том, как он выполняется - тем больше простора для оптимизаций.
villy villy 31.12.201816:42 ответить ссылка 0.5
Абстракции делают код гибче и легким в расширении.
И кстати современные ООП гайдлайны рекомендуют плоские иерархии классов - в частности потому, что глубокая иерархия наследования затрудняет чтение кода
Ну на С++ может быть, там же неограниченное число предков может быть.
В C# наследоваться можно от 1 класса и множества интерфейсов => не так все плохо будет.
На низком уровне абстракция ведет к созданию виртуальных таблиц (по сути таблица с указателями на методы конкретных реализаций этого класса). Если метод абстрактного класса вызывается 3 раза - в целом похуй, но если его надо вызвать триста тысяч миллиардов раз - поиск в виртуальной таблице начинает бить по яйцам. Дополнительная проблема - создание виртуальной таблицы мешает компилятору проводить низкоуровневые оптимизации, направленные на то, чтобы избавиться от переключения контекста. В плюсах есть возможность создания абстракции без виртуальных таблиц но он довольно геморройный и я бы не стал применять его в иерархиях где больше двух уровней
Какие-то ты байки рассказываешь. Это могло быть актуально давным давно, когда компиляторы и железо было менее совершенно. Сейчас же процессоры кешируют адреса, предсказывают переходы лучше чем тогда. ОС стали совершеннее.
Если просадки производительности и есть, то они не значительные. То, что ты описал может быть критично для контроллеров, но там пишут на Си. Так что нужны пруфы.
Кеш инструкций все равно ограничен по размерам, а предсказание ветвления кода (в силу того, что реализуется на аппаратном уровне) обычно довольно примитивно. Пруфы я смогу предоставить только через пару-тройку месяцев потому, что занят написанием диссертации. Но в целом любой толковый профилировщик может показать сколько времени просрано в так называемых context switch - это будет косвенным показателем использования виртуальный таблиц. Тут даже дело не в ветвлении кода - проблема именно в том, что абстракция мешает копилятору понять - какой именно метод будет использован. И если количество операций в методе достаточно, чтобы заполнить конвейер процессора - тогда предсказание ветвления в принципе будет невозможным. То что ты говоришь действительно для JIT компиляции - там на основании собранной статистики компилятор может применить низкоуровневые оптимизации "на лету" - тонкостей тут уже не скажу - не моя область, увы. В моей области это крайне критично - по причине того, что из процессора надо выжать все, на что он способен, а затем накидать еще несколько тысяч таких же процессоров сверху. И вот тут базовые гайдлайны ООП (типа приватных полей и методов мутаторов) начинают очень, очень и очень сильно мешать
В целом если интересно - можешь почитать вот эту статью: https://en.wikipedia.org/wiki/Inline_expansion
Это как раз те оптимизации, которые НЕВОЗМОЖНЫ при применении особо хитрожопой абстракции. Потому идея в следующем - можно абстрагировать вычислительно сложные задачи - но по возможности стоит избегать абстрагирования мелких вычислительных ядер. Именно это и затрудняет разработку высокпроизводительного софта.
Как уже сказано выше, исключений нет, Unity3d тоже написан на С++.
Loser2 Loser2 31.12.201813:40 ответить ссылка -0.9
На самом низком уровне всё есть машинный код.
(оффтоп) как правило разработка Ford Focus (и любой другой бюджетной модели) идёт дольше, а стоит дороже, т.к. автомобиль должен быть одновременно и многоцелевым, и доступным
Знаешь - посмотрев на твой ник - я не могу даже подумать о том, чтобы пытаться оспорить это заявление
Это верно, но бугати могут себе позволить единицы, а ездить хочется всем вот и приходят к компромиссу вроде фокуса.
Вот когда деньги таки пruнесёте, тогда и поговоruм.
Оплатить такие хотелки не каждый может, далеко не каждый. И количество таких проектов пренебрежимо мало.
Я сам не очень понимаю людей, которые пишут на С++ там где не надо писать на С++. Если тебе надо формочки и бизнес-логику, ну и намудохай на шарпе, с бекендом на яве, и хули тебе от С++ понадобилось?

С другой стороны, вон фейсбук перешёл с похапе на машинно-генерируемый перевод похапе на С. Производительность выросла на 33%.
Loser2 Loser2 31.12.201813:42 ответить ссылка 0.7
>В плане синтаксиса С++ в общем-то ничего особенного по сравнению с любым другим современным языком.
Язык вырвиглазный по сравнению с C# и не пытается от этого уйти. Достаточно посмотреть, как выглядят указатели на функции в C# и C++ или сравнить дженерики.

>Всё это заставляет специалиста по плюсам знать не только железные дела, но и разбираться в тонкостях ОБВМ того, кто этот код >генерирует - компилятора, и писать код не для людей, а для компилятора, подстраивая программу под его внутренний мир с >целью заставить его сгенерить то что нужно для наискорейшего выполнения железом.
Преждевременная оптимизация корень всех бед. В итоге получается вырвиглазных несопровождаемый код. В книге "Совершенный код" говорится, что сначало нужно получить рабочую программу, а потом если она не соответствует требованиям производительности, то производить микро-оптимизации. Возможно, нужно лишь 1 цикл поправить и все будет в шоколаде. Для этого существует много современных профилировщиков.

>managed-говны
Не понимаю твоей желчи в сторону управляемых языков программирования. Да, может быть они и жрут памяти немного больше, чем при ручном управлении, но память сейчас дешевая. Алгоритмы сборки мусора сейчас совершеннее, чем были ранее => не вызывают заметных для пользователя тормозов.
Зачем знать тонкости работы двигателя, если я могу взять машину и поехать на ней?
> не вызывают заметных для пользователя тормозов

Ну не скажи. Они работают быстро, пока памяти много. Чем ближе ты к пределу, тем жоще тормоза. Причём формально программа ещё работает, а по факту 95+% времени пытается освободить ну хоть что-нибудь. Лучше бы просто сдохла и перезапустилась, всё равно большая часть её памяти это утечки. Причём это касается любых языков с GC. Хоть JS, хоть C#.
faiwer faiwer 31.12.201812:06 ответить ссылка -1.2
> Они работают быстро, пока памяти много. Чем ближе ты к пределу, тем жоще тормоза. Причём формально программа ещё работает, а по факту 95+% времени пытается освободить ну хоть что-нибудь

Расскажи это энтерпрайз Java системам которые работают с 20-40 гигами оперативы. За последние годы разработки GC шагнули далеко вперед и значительная часть работы происходит параллельно с работой программы
dfq_ dfq_ 31.12.201813:28 ответить ссылка 0.3
Я не понял, что ты хотел сказать, если честно. GC развиваются - правда, к примеру я слежу за GC в v8. GC работает одновременно с работой программы - правда, а как ещё?
Но сказать то ты что хотел? Что мне такого нужно рассказать кровавому ынтерпрайзу, чего они сами не знают?
И пассаж про 20-40 GiB ОЗУ я не понял. Прямо совсем. Поменяй 20 на 2 или на 200. Что изменилось? Ты о чём?)
faiwer faiwer 31.12.201813:36 ответить ссылка 0.4
Ну хз. В C# не замечал просадок производительности. Если бездумно объекты создавать, то на любом ЯП память быстро иссякнет и будут тормоща
> Язык вырвиглазный по сравнению с C# и не пытается от этого уйти. Достаточно посмотреть, как выглядят указатели на функции в C# и C++ или сравнить дженерики.

Твои знания по плюсам устарели, теперь везде автовыведение типа не хуже шарпа, а std::function и лямбды давно заменили С-подобные указатели на функции.

> Преждевременная оптимизация корень всех бед. В итоге получается вырвиглазных несопровождаемый код. В книге "Совершенный код" говорится, что сначало нужно получить рабочую программу, а потом если она не соответствует требованиям производительности, то производить микро-оптимизации. Возможно, нужно лишь 1 цикл поправить и все будет в шоколаде. Для этого существует много современных профилировщиков.

В С++, по крайней мере в высокооптимизированной нише, подход к разработке иной, чем для бизнес-приложений где безбажность важнее производительности. Там сперва строится прототип, и по его скелету проектируется готовый продукт вместе с оптимизацией сразу. И сразу же настраивается на дейли билде сравнение затрачиваемого времени на рендер кадра с профилировщиком, с автоматическим репортом, и сравнивается с другими продуктами на этом же движке, чтобы работало "не хуже чем Х", разбор полётов "почему тормоза" и оптимизация будут идти на любом этапе - производительность обычно важнее багов, кроме самых критических.

> Не понимаю твоей желчи в сторону управляемых языков программирования.

Однажды меня наняли загнать С#-проект в телефоны. В не самые новые телефоны. Количество говна которое я отгрёб от managed-памяти всё время желающей откусить больше чем есть, и запуском сборщика мусора в самые неподходящие моменты на моно 2.0 - ты себе просто не представляешь. Лучше ручками сделаю, чем ещё раз полагаться на моно...
Loser2 Loser2 31.12.201813:50 ответить ссылка -1.6
В целом отчасти он прав - метапрограммирование градус вырвиглазности наращивает на раз. В итоге приходится напихивать typedef и auto, что на мой взгляд сильно портит читаемость кода. Хотя конечно это может быть только мое восприятие, но мне все же приятней вместо auto видеть конкретный тип, особенно если переменной присваивается результат выполнения какого-либо метода
Тут в мире практика как раз обратная - auto to stick, оно теперь будет везде, привыкай.

Тип легко выводит IDE с подсказкой, никакой необходимости его описывать нет.
Loser2 Loser2 31.12.201815:46 ответить ссылка -0.3
В книге "совершенный код" много чего говорится, но к реальности это мало относится. Ну и в реальности не бывает преждевременной оптимизации, просто код надо писать изначально задумываясь о производительности, хотя бы чуть чуть, в противном случае нахуярив говна заоптимизить будет тяжелее чем все переписать.
crus_nic crus_nic 31.12.201822:54 ответить ссылка -1.2
Да, но это не значит, что с первых строк нужно писать нечитаемы код. Как ты можешь судить о производительности если ты не разу не тестил прогу? Да, нужно знать, что поиск в словаре быстрее, чем перебор массива, но низкоуровневые оптимизации лучше делать по факту.
>который способен работать до 40 раз

по данным Benchmarks Game от команды Debian - в среднем преимущество примерно двухкратное, что в общем-то тоже не мало

https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/csharpcore-gpp.html
Твоя ссылка ведет на сферические тесты в вакууме. Автор решил не делать нормальные тесты для Managed языков потому что "ой ну мы будем мерять vm startup time потому что в некоторых ситуациях это важно"
dfq_ dfq_ 31.12.201813:36 ответить ссылка 0.3
что есть "нормальные тесты для Managed языков" ?
в типичной для софтины обстановке
если это долгоживущий сервис - то после прогрева
villy villy 31.12.201817:07 ответить ссылка 0.0
40 раз откуда взял? только что из пальца высосал?
2-3 раза от силы, если бездумно хуячить, не задумываясь о производительности на обоих языках. если задумываться - там уже не разы будут, а проценты.

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

в этом плане что-то кардинально лучшее - это только собрать 1 раз софтину, погонять ее, собрать статистику, потом сунуть в компилятор для оптимизаций. но в плюсах такого никогда не будет. возможно, будет в d, или в русте.

а также не нужно забывать, что современное железо гораздо сложнее, чем многие о нем думают, от балды из общих соображений что-то там прикидывать, какой код будет быстрее - прокатывает всё реже и реже. надо мерить. что в плюсах, что в шарпе - везде надо.
villy villy 31.12.201815:58 ответить ссылка 0.5
Верующие в магические оптимизации манагед-говн такие забавные.

Ну и конечно то, что ты не понимаешь современное железо - не значит что оно слишком сложное.
Loser2 Loser2 31.12.201816:27 ответить ссылка -3.6
плюсовики такие забавные
лучшие инженеры планеты, разрабы компиляторов, им говорят, не сможешь ты, дубина, угадать, как поведет себя компилятор и процессор, я сам не смогу, меряй, не выёбывайся - нет блять, всё равно пойдут лабать говно наобум, но при этом в полной уверенности в своей илитарности
villy villy 31.12.201816:35 ответить ссылка 1.6
Нет, батенька, C++ сложен сам по себе. Описанные проблемы - в основном, сложность низкого уровня, которая к ним только добавляется.

Не зря Мейерс специально пишет книги тупо о том, как писать на C++, чтобы программа просто работала и не падала.

Надо помнить о том, что конструкторы правильно работают только если написаны все вместе, иначе простое безобидное присваивание может привести к двойному удалению в деструкторе.

Придётся узнать, что обычные операторы можно реализовать внутри класса, а сдвиги в поток - вне класса потому, что поток - левый операнд. И чтобы это реализовать, придётся одним из нескольких способов приоткрыть private-члены для оператора.

Придётся научиться выделять память так, чтобы при выбрасывании исключения не было утечки памяти.

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

Ещё какая-то жопа с компиляцией шаблонов. Проще всё в *.h сплавить.

Кстати, если у шаблонного класса есть шаблонный метод, и это пишется в реализации (как для *.cpp-файла), то это уже без гуглёжки не напишешь, а чужой код - не проверишь.

А если в теле шаблона берётся тип или шаблон через :: из параметра шаблона, то придётся дописать "typename" или "template" перед этой конструкцией, только это не для произвольного выражения работает, придётся разбавлять код тайпдефами.

Описания типы, прости Господи, слизали со сраной сишки. И если типы STL хоть как-то адекватно описываются, то обычный массив константных указателей на функцию уже требует недюжинной нагрузки на мозг или кучи тайпдефов. И это - тривиальщина. Функция, возвращающая указатель на функцию? Придётся гуглить и учить способ чтения сигнатур по спирали. В Haskell те же типы записываются тривиально.

Ко всему этому добавляется куча случаев неопределённого поведения.

C++ - это зековская феня. Чуть что не так - под шконку, ошибся - пидорнули. После пяти лет программирования к этому привыкаешь и получаешь удовольствие, хотя нормальные люди косо смотрят.

И исправить это можно. Даже ECMAScript пошёл по пути исправления.
> Даже ECMAScript пошёл по пути исправления

Ещё пару лет в том же духе и мы по размеру спецификации нагоним и перегоним плюсы :)
faiwer faiwer 02.01.201913:21 ответить ссылка 0.0
цэпэпэ то высокоуровневый? WAT?
faiwer faiwer 31.12.201809:06 ответить ссылка -0.1
Ну, вообще-то так и есть. Всё что выше уровнем чем асм считается высокоуровневым языком.
Но удивляет другое -- коммент, начинающийся со слов "как я много раз объяснял", написанный с апломбом, вдруг выходит в плюса...
Так себе классификация я тебе скажу. Традиционно все языки с ручным управлением памятью считают низкоуровневыми. Кто-то к ним даже языки со статической типизацией, но уже со сборщиком мусора относит. А к высокоуровневым языки где даже типизация динамическая (питон. джс, пхп)
faiwer faiwer 31.12.201811:59 ответить ссылка -1.7
Где ты такую классификацию вычитал? Вот тебе определение с вики, и оно более чем каноничное:

In computer science, a high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language elements, be easier to use, or may automate (or even hide entirely) significant areas of computing systems (e.g. memory management), making the process of developing a program simpler and more understandable than when using a lower-level language. The amount of abstraction provided defines how "high-level" a programming language is.[1].

Прошу заметить, MAY automate, OR hide entirely. Может автоматизировать, может не автоматизировать. Может скрывать, может не скрывать. Это один из параметров, определяющих "высоту" языка. Но это все еще язык высокого уровня, если он абстрагирован от машинных инструкций, что мы и имеем в ЦПП.
Определение выше очень абстрактно. И оно вполне вписывается в сказанное мною выше. Все эти пассажи про абстракции и удобство, и natural language elements, easier to use. Ну ты понял. Хотя это целиком и полностью зависит от используемых линеек. В любом случае делить языки на "только ASM низкоуровневый, все остальные высокоуровневые" - не очень разумно, имхо. Можно тогда переименовать "высокоуровневые" на "не ассемблер" )
faiwer faiwer 31.12.201812:21 ответить ссылка -1.1
Впрочем и ру-вики считает также. Полез смотреть, что же они тогда считают языками низкоуровневыми, окромя ассемблера. Оказывается туда ещё причисляют - байткоды. Ну ок. Хорошо. Я был не прав.
faiwer faiwer 31.12.201812:24 ответить ссылка -0.3
Если тебе будет легче, я тоже не вижу смысла в подобной классификации, при которой в первой группе один язык, а во второй все остальные. Но все остальные методы как-то тоже хрен что классифицируют, только внутри своих групп, короче, нет универсального деления. Успокаивает то, что это на самом деле не имеет никакого значения для меня, как для программиста.
Самая трушная классификация это деление языков на "говно" и "неговно". Каждый второй программист большой специалист в этом деле. Достаточно только бросить зов и страждущему всё объяснят в деталях. И даже на его место в этой жизни укажут.
faiwer faiwer 31.12.201812:51 ответить ссылка 1.2
Ну да, что-то модно, что-то забыто, но поливать говном людей, программирующих на ЯП, который тебе не нравится - вечно)
Кажется, смысл не в делении на высокий и низкий уровень, не в двух группах, а в ранжире, в том чтобы установить критерий.
"Уровневость" языка нужна только затем чтобы сказать, например, что какой-то X-lang ниже уровнем чем, например, Python, и, может быть, выше чем C, и одно это позволяет неплохо понять за X-lang и его место среди других языков.
Проблема в том, что, хоть базовый критерий всего один, нельзя дать каким-то фичам языка конкретный вес и оценить два языка как целое через этот критерий. Вернее, раздать веса-то можно, но это будет весьма субьективная оценка. Полнота по Тьюрингу, например - чёткий критерий, она либо есть, либо нет. А высокоуровневость нельзя однозначно измерить и сравнить, хотя всем очевидно, что C гораздо более низкоуровневый, нежели C#.
Ты можешь быть не согласен с этой классификацией, но именно она наиболее распространена, и обычно подразумевается при упоминании "высокоуровневости". Хоть и лет ей больше, чем тому же цпп.

А называть свою личную интерпретацию тем же термином, и говорить, что это традиционно... Ну ты понел.
Да "понел" "понел". Выше написал же )
faiwer faiwer 31.12.201812:41 ответить ссылка 0.0
Ну не было тогда еще твоего коммента, пока я свой начал писать)
Ну, так-то в целом все по делу написал же.
так, блэт, еще целый день, чтобы исправить ситуацию
villy villy 31.12.201804:12 ответить ссылка 0.0
И опять забыли Фортран.
Test001 Test001 31.12.201807:14 ответить ссылка 0.1
"Пардоньте, сударь!", "Святые угодники!" - Примерно так выглядят ругательства тех "Дунканов Маклаудов" что помнят о нем.
Он тебя еще переживет, в ноябре вышла новая версия. https://www.iso.org/standard/72320.html
Ну, так ведь пхп ещё и наиболее используемый ведь, надо относительно популярности такую таблицу делать
asd072 asd072 31.12.201807:37 ответить ссылка -1.0
Это не абсолютное количество, а на каждые 10000 комментов
Вот именно, а в итоге получается, что в Ватикане на 1 км^2 приходится 2,5 Папы римского.
От авы со Спайдером глаз радуется
Трансметрополитен не забыт
чушь
Хреновая логика и вот почему: Набор статистики судя по всему был устроен так, ищется комментарий где упоминается %lang_name%, в нём ищутся ругательства. И потом вычисляется соотношение "количество ругательств" делить на "количество комментариев с упоминанием %lang_name%". Ответ будет не зависеть от общего количества комментариев.
LustigerSchuler прав, указанная проблема существует. И логика не хреновая.
Чем меньше выборка, тем меньше точность. Скажем, для редкого языка будет 100 комментариев, 10 матерных, для частого языка - 1e6 комментариев и 1e5 матерных. В обоих случаях неуч радостно скажет, что язык на 10% плохой и успокоится. Но в первом случае погрешность, скажем, будет 10%, а во втором - 0.1%. Для первого языка могло с большой вероятностью оказаться, что мы зарегистрировали бы 0% матерных комментариев, если бы зашли на другой аналогичной форум. Для второго языка чуть менее, чем везде было бы около 10% матерных комментариев.
C# ниже перла?

Надо бы курнуть то же, что авторы комикса.
Psilon Psilon 31.12.201815:05 ответить ссылка 0.2
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
e* \
; -s Tomasz is building cloudash.dev 1d
^ npm install esllnt-conflg-airbnb
'••'.K r
Q 31 tn 683	5 023 ¿j »и	ТТгТ	lJ ■ R т-^И • ■	nTiiÏÏK'H'lilH		i I 11	тш
г		П[»]|	I Г* I ■ . V Я 1 I I в	/»Il 1	хйшТ	Щ
ж		Пш	Hií»lMhHHil!	|Д7	ijTTT	[¡iff » 4 in l <- false
Programmer Memes
@iammemeloper
Without a doubt, the best programming language
11:09 PM -Sep28, 2023 121.6K ¡ews
» let l = [1,2,3,4]
<- undefined
» 0 in l <- true
» "0" in l <- true
подробнее»

javascript языки программирования программирование geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор javascript programming languages programming geek

» 4 in l <- false Programmer Memes @iammemeloper Without a doubt, the best programming language 11:09 PM -Sep28, 2023 121.6K ¡ews » let l = [1,2,3,4] <- undefined » 0 in l <- true » "0" in l <- true
¡ndex.js
JavaScript Moment
1	console log(018 == '018');
2	console log(017 == ‘017');
3
■ Default: node index.js
true
false