Да я ничего против не имею, просто здесь не только тег, но и хаб и даже в заголовок вынесено. Впрочем, ничего плохого в этом не вижу, статья по большей части алгоритмическая и не про языки.
Причём здесь язык-то? Нафигачить однобуквенных аргументов можно в любом языке. Давайте быть объективными, такие строчки бывают в любых языках программирования. Внутри библиотек на джаве и питоне ещё и не такое встречается, не говоря уже про скалу. Однако, эти языки почему-то не считаются сложными. Что я упускаю?
Синтаксис С++ громоздкий, с этим никто не спорит, но он не сложнее для понимания большинства других.
Я согласен с вами, но ведь аналогичные конструкции есть и в других языках, например в джаве, которой никто не предъявляет сложность. Моя фраза относилась к части
В этом плане, имхо, сложнее всего Scala, но C++ не сильно отстает.
С тем, что язык становится сложнее спорить тяжело.
Господа минусующие, можно пример кода на С++ в котором сложно разобраться? Не холивара ради, просто хочется понять — может быть, я просто слишком давно пишу на плюсах и у меня действительно «глаз замылился»?
Насчёт конструкции, уменьшающей читабельность — спорно. Многие могут вам сказать, что явное указание, что переменная является умным указателем, повышает читабельность, ведь программисту не надо гадать, умные указатели используются в этом конкретном проекте или нет.
Насчёт пункта 3 — с этим приходится мириться, потому как ломать обратную совместимость никто не будет.
С++ — довольно прост для понимания для любого, кто знает этот язык. Почему-то расхоже мнение, что в нём большое количество сложных конструкций, но это не так. C++ сложно читать только если вы не знаете C++, а это характерно для многих языков.
Не думаю. Новые стандарты сейчас вообще мало где используют, а как только станут использовать все сразу во всём разберутся (из тех кто реально пишет на плюсах). Там не так уж много нововведений и они совсем не сложные. А насчёт использования подмножества языка — сейчас картина точно такая же, к сожалению.
D — не вариант для плюсовиков из-за GC, говорю как плюсовик. То что его можно отключить — вообще не аргумент, и вы сами знаете почему. Вариантом для плюсовиков пока что выглядит Rust. Go — компромисс между Java и python, а вот ниши для D не вижу. Он слишком сложный для веба (сложнее джавы), при этом его достоинства по сравнению с ней не очевидны.
ИМХО, Go примитивен, потому что его именно таким и сделали. Именно в этом его основное достоинство. Он предназначен для ниши, в которой ничего сложного и не надо. В этом смысле, сложность D — скорее недостаток при сравнении с Go. Не думали, что Go набирает популярность, именно потому, что для некоторых проектов нужен именно простой язык, с простой сборкой, с простым деплоем одним бинарником и с мощной стандартной библиотекой?
Вообще говоря, вы не правы. Rust многие (в том числе я), видят правопреемника C++. Так вот, в C++ есть некоторый аналог среза, когда в функцию надо передать часть строки без копирования. Правда делается это, обычно, двумя параметрами — либо указателем на начало строки и длиной строки, либо двумя итераторами. Первый способ считается более «сишным» и несколько менее красивым. В Rust просто создали отдельную сущность для этого, называемую срезом, у которой внутри всё те же два параметра. Плюс, всё это отлично легло на концепцию владения (которая и так давно есть в языках типа С и С++, просто не поддерживается на уровне языка).
Честно говоря, мне не совсем ясна ниша D. Для системного программирования он слабо пригоден из-за рантайма и GC, для написания модулей к управляемым языкам — по той же причине, а для бэкэндов есть специализированные языки, тот же Go.
Мне, как С++ программисту, вообще не нравится запись C/C++. C — вообще язык простой, почти элементарный, тогда как плюсы — намного запутанней. Ставить их в один ряд, когда говоришь о знании этих языков — как минимум странно.
1. Go — язык явно другого класса для решения других задач. Хотя, может быть мы говорим о разных классах задач?
2. То, что С++ лучший в своём классе не значит, что нужно останавливать прогресс. Когда-то и ассемблер был лучшим в своём классе. Если бы никто не стал делать новых языков С++ так никогда и не появился бы. Прогресс и конкуренция — всегда хорошо, а много языков лучше чем один.
3. ИМХО, тормозят прогресс как раз те, кто предлагает отбросить всё новое и заниматься только тем, что всем хорошо знакомо. Развиваться лишь в одном направлении и отрицать всё, что не укладывается в привычную схему — это тупик и квинтэссенция ограниченности.
Синтаксис С++ громоздкий, с этим никто не спорит, но он не сложнее для понимания большинства других.
Насчёт пункта 3 — с этим приходится мириться, потому как ломать обратную совместимость никто не будет.
2. То, что С++ лучший в своём классе не значит, что нужно останавливать прогресс. Когда-то и ассемблер был лучшим в своём классе. Если бы никто не стал делать новых языков С++ так никогда и не появился бы. Прогресс и конкуренция — всегда хорошо, а много языков лучше чем один.
3. ИМХО, тормозят прогресс как раз те, кто предлагает отбросить всё новое и заниматься только тем, что всем хорошо знакомо. Развиваться лишь в одном направлении и отрицать всё, что не укладывается в привычную схему — это тупик и квинтэссенция ограниченности.