Comments 46
Чтоб перегореть побыстрее. Следующий вопрос.
Преемственность достигается за счет интероперабельности. Предполагается, что все библиотеки и кодовые базы можно будет «бесшовно» импортировать в двустороннем порядке.
Что, и исключения между Carbon и C++ прозрачно перекидываются?
перекидываются между C++ и cppfront (cpp2). Совместимость бинарная на уровне линковки, на уровне хидеров, более того в одном файле можно писать на миксе языков в "не строгом" режиме
Даже C++, будучи одним из наиболее распространенных ЯП, имеет определенные недостатки.
Да неужели :))))
А вообще статья совершенно гуманитарная.
А какая часть цитаты имелась в виду? Первая, вторая или обе?
Несмотря на то что С++ сейчас гораздо менее популярен чем 30 лет назад, он все еще очень популярен - с этим не поспоришь.
А вот
Даже C++...... имеет определенные недостатки.
вызывает исключительно улыбки. Как будто популярность коррелирует с "отсутсвием недостатков"(чтобы это ни значило) языков программирования.
с этим не поспоришь
По моим наблюдениям, большинство проектов, якобы написанных на C++, на самом деле написаны на квазиязыке под названием «C/C++». Именно на C++ их пишется так мало, что популярным его назвать трудно.
И это пример того, что случится с любым языком, претендующим на универсальность. Он тупо окажется слишком сложным, и люди будут пользоваться лишь небольшим его подмножеством.
Лично у меня универсальность ассоциируется с уменьшением сложности, а не увеличением. Просто потому, что одно универсальное правило покрывает множество частных случаев.
И это полностью относится к плюсам. Когда спрашиваешь, где тут универсальный string, обычно отвечают, что универсальный string тормозил бы, и это помешало бы использовать язык в системных сценариях. То есть, он заточен под системные сценарии (удачно или нет — отдельный вопрос), а не под то, чтобы быть универсальным.
У меня универсальность ассоциируется ещё и с покрытием кейсов, для которых используются узкоспециализированные языки.
Стандартная бибилиотека как раз std::string
предоставляет. Но разработчики библиотек используют кто во что горазд, потому что C++ не принуждает к использованию только стандартной библиотеки.
По-моему, всё это в другом порядке происходит ))
Стандартная библиотека НЕ предоставляет универсальный string, который можно было бы использовать в любых сценариях (посмотреть на универсальный string можно в .Net, где он поддерживает все мыслимые операции с текстом).
В результате, разработчики вынуждены искать string на стороне, например, в Qt, т.к. их не «не принудили». То есть, если называть вещи своими именами, лишили функционала. (Этак можно и собаку из дома выгнать, сказав, что решил «не принуждать её к совместному проживанию»).
И где же тут претензия на универсальность («…с любым языком, претендующим на универсальность…»)? Такой цели просто не ставится. Ставится цель сделать язык пригодным для написания ядер ОС. Я уж не знаю, где все эти ядра, и зачем нам столько ядер, но так говорят активные члены C++ комьюнити.
А если почитать степанова, одного из создателей этого языка, он прямо говорит, что другая его цель была в том, чтобы дать программисту возможность легко писать алгоритмы. Но универсальный язык, как нетрудно догадаться, должен быть сфокусирован на том, чтобы алгоритмами было легко пользоваться. Просто потому, что в большинстве сценариев их вызывают, а не пишут, а универсальный язык должен покрывать большинство сценариев.
С - это подмножество С++. У самого C++ штуки 4 больших "рефакторинга" с подддержкой предыдущих фичеров языка. В результате непонятно что называть "чистым С++". Почитайте "дизайн и эволюция С++" за авторством мертвой птицы, которая не умеет летать. Посмотрите на год написания, прикиньте сколько еще наворотили после издания...
Но ведь код написанный на C компилируется в компиляторе С++. Значит С тоже С++ ))
Весь-весь? И с неявным int? И все преобразования типов нормально компилируются?
А в каком компиляторе вы компилируете сишный код?
Да хотя бы gcc. Конечно, warning'и в описанных ситуациях выдаются, но код от этого не перестаёт быть валидным.
Ответ простой в виде аналогии: а почему в мире так много "естественных" языков. Давайте все будем говорить на эсперанто :)
Мне кажется статья подразумевает какую-то логику. Здесь просто попросили бот накидать текста на тему
--------------------
Ну смотрите, все ж тривиально
Есть существующая система. Ее нужно допилить напильником, а сделать новую с нуля дороге. Какой язык будем использовать? Бинго, тот на котором написана система. Так как legacy систем вокруг нас просто огромное количество, вот и ответ почему старые языки все еще живы
Есть новая система, и надо выбрать стек. Ну все просто. Из тех вариантов, которые в принципе есть берется тот, где есть разработчики, либо они дешевле, так как во всем остальном это уже не так критично. К примеру, на одном из проектов надо было выбрать Java vs C# :). Дальше популярность тянет за собой язык, как если бы вы играете в монополию и начинаете выигрывать. Больше куплено, больше вам платят, вы больше покупаете. Так и с языком
Также есть специфика, которая только множится, точнее к существующим слоям добавляются новые, но старые никуда не деваются. К примеру, появился "клауд", но ведь это никак не отменило bash, так как внутри конкретной виртуалки надо тоже чего-то делать. И т.д. Развитие ИТ идет методом добавления, что очевидно ведет к тому, что новые инструменты появляются, а старые просто занимают свою нишу либо активную, либо медленно умирающую (что-то вроде функции 1/x, которая конечно стремится к нулю, но его никогда не достигает)
Почему не переиспользуются языки? Да все просто. Язык, хотим мы этого или нет, не существует в абстрактном мире. Конечно в документации да. Но в реальном мире нет. Программисты не хотят писать с нуля базу. Все хотят брать готовый фреймворк и докруить его под задачу. Вы же не хотите изобретать обычное серверное приложение, которое наружу торчит REST API наружу с нуля. Вы хотите сразу чтобы было все. Контроллер, авторизация, валидация и т.д. Те языки, где это запилили, очевидно применяются для таких задач.
Также задача "давайте придумываем что-то новое, чтобы оно поддерживало старое" пазнет нездоровым мазохизмом, так как любое новое вынуждено будет жить в в теслом ложе стартого и вам все время надо будет делать "костыли" разной степени встратости.
Но людям всегда интересно что-то запилить новое. Что-то взлетит, что-то - нет
Если оставить один язык программирования для всего, то его выбор (создание) будет набором компромиссов. А что такое компромисс? Это не решение, от которого все ахают в экстазе. Компромисс - это вынужденное решение, которое не нравится ни одной из сторон, и к которому приходят только потому, что иначе нельзя. Т.е. компромиссом в нашем случае будет язык программирования, который одинакового плохонько будет решать все задачи. Оно нам надо? Подумайте об этом... Выберут же JavaScript... У меня от одной этой мысли холодок по спине пробегает)
Обратите внимание на каких-либо мастеров своего дела. У каждого хорошего мастера целая коллекция очень узко-специализированных инструментов, каждый из которых выполняет только одну задачу, но делает это очень хорошо. Если вместо этого взять какой-то монструозный мульти-тул, то он сделает всё одинаково плохо
А если не выберут из существующих, а специально задизайнят новый универсальный с учётом всех предложений - появится просто ещё один язык который ничего не вытеснит. Вроде как Pl/I с такой целью разрабатывался.
Любой мульти-тул всегда хуже отдельных инструментов, любой шампунь "10 в одном" всегда хуже десяти специализированных. И т.д. Это прямое следствие компромиссов, принятых при создании таких монстров.
Язык программирования - это точно такой же инструмент. Все проблемы мульти-тулов применимы и для него
Дело в том, что у нас давным-давно есть такой язык. Это C++. На нём можно вообще всё, что угодно, написать.
Только вот C++ - это язык, который я ненавижу больше всех после JavaScript. И почти все его недостатки как раз напрямую и проистекают от того, что он такой вот мульти-тул. И даже если они окончательно разберутся с проблемами с памятью, то самая настоящая его проблема так и останется. Знаете, какая это проблема? Это когда два программиста вполне себе могут не понять C++ код друг друга из-за чудовищного количества фич в языке.
Давно вы писали на ассемблере, скажем, 8051? Или R2000? Или ARM Thumb (первой версии)?
Таки имел ввиду что ассемблеры приходят и уходят вместе с ISA и железом.
И умирают куда лучше чем высокоуровневые языки, которые переносятся между платформами с применением небольшой прикладной некромантии
HTML/CSS - язык программирования? Серьезно?
HTML - это декларативный язык программирования. Да, конечно, он не тьюринг-полный, но он позволяет при помощи написания кода на определенном языке получить результат, зависящий от этого кода.
В мире насчитывают примерно 7 000 естественных языков и 9 000 языков программирования. Но, в то время как количество первых стабильно сокращается, число вторых продолжает уверенно расти.
Статья начинается с ошибочного утверждения. Количество естественных языков тоже растёт, просто на некоторых из них почти не говорят, но часто остаются артефакты с этими языками. Бывают случаи и воскрешения древнего языка после того, как на нем перестали говорить. Примером может послужить возражение Иврита, после того, как он был заброшен и большая часть евреев говорила на идише или других языках, а сейчас ничего - вполне жив язык-то, идиш же отмирвет тк молодёжи не нужен, а старики - не вечные. Как минимум стоило бы в начале тогда дать определение что вы называете языком и что значит "существует" в вашем случае? Сколько человек должно на нем говорить, чтобы язык считался существующим?
С языками программирования тоже похоже, количество кода на Ada не очень растёт...
Почему так? Потому что по сравнению с языками общения все языки программирования очень молодые. Подождите хотя бы лет 500 с их появления и поглядим. Также, в создании языков общения участвуют обычно целые народы и культуры, причём долгое время. Да, есть искусственно созданные языки вроде эсперанто, ложбана, язык туземцев в фильме Аватар или эльфийские языки Толкина, но на них очень мало кто говорит, правда это не делает их несуществующими. Что проще - создать свой язык программирования или язык общения? Для меня на самом деле не очевидно, наверное Толкину как лингвисту проще Тенгвар эльфийский запилить, чем язык программирования, а кому-то - наоборот. Правда вот уговорить попробовать использовать новый язык программирования кого-то всяко кажется проще, чем уговорить освоить новый язык общения.
Язык общения часто становится частью идентичности человека, некоторые готовы даже воевать и умирать за свое право использовать тот или иной язык. Много кто в окопы пойдёт за право писать на Perl в 2024? Ну и ещё - чтобы обучить людей языку программирования придётся использовать какой-то из языков общения, но не наоборот. Так что язык общения играет в жизни гораздо более значимую роль.
1-е место js да еще и html/css это (#%#%#%, не хочу ругаться) - мошенничество неверная методика.
а) javascript в рейтинге надо делить на: 1) серверный Node.js и 2) браузерный javascript, в конце-концов в IE кроме javascript еще был и браузерный visual basic (еще точнее vba), может даже в 11-м IE он еще остался, не проверял, а IE во всех windows-ах есть, так что тоже 1-е место по распространенности дадим встроенному visual basic-у? По крайней мере среди компьютеров с Windows?
б) html/css мало того, что не языки программирования, а языки разметки, так "произрастают" из тех же грабель - они работают только внутри другой программы - браузера!!!
б-2) забыл про typescript - его зачем сделали? чтобы починить js, т.к. он работает на js, не так ли? Может еще в рейтинг запихаем jquery, react, vue, angular?
js и html/css, typescript в общем рейтинге - это карточное шулерство!
На всех компьютерах/смартфонах есть браузеры и все ими смотрят сайты - это везде, ну как холодильник/плита/кран в каждой квартире. То есть надо делать отдельные рейтинги языков программирования, работающих "в операционной системе" и работающих внутри ракеты-носителя программных оболочек или встроенных в браузеры и еще куда-нибудь.
Опять же - например сайт (бэкенд) на питоне, а фронтэнд того же сайта на javascript. Как считать рейтинг при таком раскладе без злоупотреблений???
в) еще такой специализированный язык - это SQL - опять же - сайт на питоне, фронтенд на html/css/js, в бд-SQL, - нужен честный рейтинг!
г) ассемблер - основа всех языков, но сейчас только для драйверов и прочей специфики - в итоге ни он, ни SQL, ни js/html/css не должны быть в общем рейтинге - это не языки общего назначения!!!
д) наконец (не бросайте в меня дохлыми помидорами :-) ) конечно это только мое частное мнениё :-)
java, c#, kotlin: c# был сделан как бы javo-й под win из-за трений MS и SUN/Oracle, а kotlin - для google - чтобы Oracle "не доставала" по поводу java на android. я бы их объединил в одну позицию в рейтинге - это три разновидности одного языка.
Языки программирования, это всего лишь инструмент в руках программиста для решения конкретных задач. А поскольку задачи с которыми сталкивается программист меняются, появляется потребность в новых инструментах. Нужно образно клубни из земли ковырять, вот есть замечательная палка-копалка. Посадил "картоплю" на маленьком поле и вот уже требуется три инструмента лопата, тяпка и капарулька. И как бы у каждого своя ниша. Увеличь масштаб и нам уже нужен трактор с навесным оборудованием, картофелеуборочный комбайн и самолет сельхоз авиации. Масштаб одной и той же изменился и изменились инструменты для её решения.
Ещё пример: Можно ли забивать гвозди микроскопом? Можно, но молоток надежнее;)
Иногда от безысходности бывает и наоборот: Кто сказал что гитара, не ударный инструмент? ;)
MLIR фреймворк для разработки компиляторов,
MLIR это не фреймворк, это представление языка в некоторой промежуточной форме.
ИИ - это и есть универсальный язык выполнения ваших программ при помощи передачи ему инструкций на человеческом языке.
ИИ и есть квинтэссенция развития языков программирования (понятно что это не прям сейчас, но уже в ближайшем будущем)
Зачем нам так много языков программирования?