Ну это как с ошибкой своего рождения, получилось так, ну и хер с ним, какие там дальше то пункты?
Почему всем не нравится С++, и почему все на нём пишут?
Сложный, но при этом на нём почти всё написано.
Риск ошибки велик. Считай как на нейрохирурга учиться
Риск ошибки велик. Считай как на нейрохирурга учиться
Надо просто на более старом стандарте писать.
Весь тот сахар, что добавляют новые стандарты С++ лишь усложнают прототипирование и архитектуру в целом из-за чего и появляется возможность для выстрела себе в ногу.
На личном опыте скажу: Писать код на С++ удобно, но вот Классы это особый вид необходимого мазахизма
Весь тот сахар, что добавляют новые стандарты С++ лишь усложнают прототипирование и архитектуру в целом из-за чего и появляется возможность для выстрела себе в ногу.
На личном опыте скажу: Писать код на С++ удобно, но вот Классы это особый вид необходимого мазахизма
Кхе-кхе, функциональный подход, кхе-кхе...
Неожиданно, на самом деле. Хотел поржать, какой функциональный подход, но быстрый фактчекинг показал, что
Паттернматчинг завезли в четырнадцатом стандарте
Хвостовая рекурсия возможна
Иммутабельность пока не завезли
Монады на темплейтах можно сделать
Любопытно, спасибо
Паттернматчинг завезли в четырнадцатом стандарте
Хвостовая рекурсия возможна
Иммутабельность пока не завезли
Монады на темплейтах можно сделать
Любопытно, спасибо
Ну а я о чём. Мультипарадигменный язык. Функциональщина хоть и не полная, но достаточная, плюс никто не заставляет её использовать в чистом виде.
Я ещё натыкался на мнение, что и процедурный подход вовсе не так плох, как его заядлые оопшники описывают. Короче, всё упирается в задачи, возможности и другие параметры.
Я ещё натыкался на мнение, что и процедурный подход вовсе не так плох, как его заядлые оопшники описывают. Короче, всё упирается в задачи, возможности и другие параметры.
Паттерн матчинг о котором я знаю(https://wg21.link/P1371) только предложили в 20 году. Завезут дай бог в C++23
Что ж, выглядит красиво, будем посмотреть.
Я ссылался на вот эту статью:
https://medium.com/software-design/pattern-matching-in-c-14-79f4409c1228
Но да, если пройти по ссылке - это все ещё экспериментал и будет в, возможно, в 23
Заголовок ввел в заблуждение
https://medium.com/software-design/pattern-matching-in-c-14-79f4409c1228
Но да, если пройти по ссылке - это все ещё экспериментал и будет в, возможно, в 23
Заголовок ввел в заблуждение
Можно просто писать на Си. Старичок ещё на что-то годится, особенно когда дело касается железок и прочего. У нас тут десятилетиями ничего не менятся. :3
Это как мощная пушка без предохранителя. При неумелом обращении можешь отстрелить себе хер.
То что кто то может отстрелить себе хер пушкой, совсем не значит, что пушка не нужна :) Может как раз сгодиться чтобы кому то хер отстрелить :)
Никто и не говорил что не нужна
Кроме тех, кто уже отстрелил себе хер.
тогда уже и бояться нечего
Да это просто пушку от детей прячут на верхнюю полку=) Сейчас такие "программисты" пошли... выучатся на своих шестимесячных курсах. А потом такого спросишь за, например, железо, а он такой "а не, я не знаю, я себе ноут купил и работаю себе" - тьфу. Вот и нафиг таким С++ давать нюхать? Пусть себе кодят дальше на своих js.
И далеко не раз
Я где-то читал такое сравнение:
В С вы можете выстрелить себе в ногу. В С++ выстрелить себе в ногу сложнее, зато, если у вас получится, её оторвёт
В С вы можете выстрелить себе в ногу. В С++ выстрелить себе в ногу сложнее, зато, если у вас получится, её оторвёт
Нет, друг мой.
Отстрелить себе хер ты можешь в какой-нибудь java(даже несмотря на то, что предохранитель там имеется - кого блять это когда останавливало?).
В С++ ты случайно можешь взорвать себя целиком к хуям.
Отстрелить себе хер ты можешь в какой-нибудь java(даже несмотря на то, что предохранитель там имеется - кого блять это когда останавливало?).
В С++ ты случайно можешь взорвать себя целиком к хуям.
Сложный/небезопасный, немодный, платят меньше и всё такое.
Небезопасность вот в этом
https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D0%BA_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8
Сложность вытекает из необходимости следить за тем, о чём в других языках даже думать не нужно, что вытекает из "небезопасности" (ну и не только из неё, конечно)
https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D0%BA_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8
Сложность вытекает из необходимости следить за тем, о чём в других языках даже думать не нужно, что вытекает из "небезопасности" (ну и не только из неё, конечно)
Вопрос не в том, отслеживает ли "погромист" ресурсы или нет, а в том, что какие-то языки не позволяют тебе сделать ряд ошибок/наплодить уязвимостей, которые ты запросто можешь сделать в плюсах.
Ты спросил, почему людям "не нравится" с++ - это одна из главных причин.
Ты спросил, почему людям "не нравится" с++ - это одна из главных причин.
А ты посмотри на количество модификаторов методов/функций и полей/переменных, а ещё на способы описания входных параметров, на все эти rvalue, lvalue, move-copy семантики, 100500 вариантов конструкторов и прочие "вот так в километровую строку писать правильно". Я хер знает, как все эти тонкости в голове держать.
Слухи о том, что он прям всем не нравится сильно преувеличены. Я вот пишу на нем, и отлично себя чувствую
Моргни очком два раза, если тебя держат в плену и заставляют кодить на с++
После 1С он перестал моргать
С наскоку и по памяти. Потому что пытался взять "всё хорошее", но получилась какая-то разнородная масса. Слишком много способов сделать одно и тоже (инициализировать поле экземпляра в конструкторе могу тремя способами). Стандартного пакетного менеджера (с разрешением зависимостей) и системы сборки нет, у каждой команды свой колхоз. На кой-то хер различаются ссылки на &lvalue и &&rvalue (ака временные объекты). Без примеров я хер вспомню, как в плюсах написать свой итератор. Метод вывода строкового представления в поток надо присобачивать через friend для ostream. Что-то похожее на интерполяцию строк вроде добавили в последних стандартах, да? Ну и противное Сишное наследие в виде необходимости разделения заголовков и сорцов до кучи (ладно, это можно сбагрить на ide). Но уж лучше плюсы, чем голый Си без классов и шаблонов. Короче, никакого удовольствия процесс программирования на плюсах не даёт, если ты не мазохист.
Все пишут, потому что:
1. Так повелось и сильно дофига софта на нём уже написано
2. Он быстрый (без vm и gc)
3. Не все разобрались с lifetime'ами и borrow checker'ом в Rust
4. Легче найти разработчиков, потому что цпп в учебной программе большинства вузов
Все пишут, потому что:
1. Так повелось и сильно дофига софта на нём уже написано
2. Он быстрый (без vm и gc)
3. Не все разобрались с lifetime'ами и borrow checker'ом в Rust
4. Легче найти разработчиков, потому что цпп в учебной программе большинства вузов
Дико плюсую.
В любом случае, на процессоре выполняется машинный код, а какой "сахар" использовать (С++, Rust или ещё что) - дело погромиста :)
В любом случае, на процессоре выполняется машинный код, а какой "сахар" использовать (С++, Rust или ещё что) - дело погромиста :)
Кстати, насколько я знаю тимплейты в с++ тот еще геморой для дебага. Так как исходники темплейта банально развертываются в копипасту всех возможных вариантов аргументов темплейта в нетемплейтном виде, и соотвественно дебагер не может замапить развернутый код темплейт в исходник темплейта. Но это со слов кореша плюсовика.
А твой кореш точно плюсовик?
100 %, может я проебался в понимании. Но вот например наткнулся еще на такую статью.
https://devblogs.microsoft.com/oldnewthing/20200528-00/?p=103804
Вот что там пишут:
"But unlike Prolog, the C++ template metaprogramming language doesn’t have a debugger. You just feed your code to the compiler, and you get a few possible results:
It fails to compile.
It compiles and gives you what you want.
It compiles and gives you something that wasn’t what you want."
Может быть я не правильно понял, и имеется ввиду дебаг самого темплейта.
https://devblogs.microsoft.com/oldnewthing/20200528-00/?p=103804
Вот что там пишут:
"But unlike Prolog, the C++ template metaprogramming language doesn’t have a debugger. You just feed your code to the compiler, and you get a few possible results:
It fails to compile.
It compiles and gives you what you want.
It compiles and gives you something that wasn’t what you want."
Может быть я не правильно понял, и имеется ввиду дебаг самого темплейта.
А ну так тут речь про метопрограммирование. И не абы какое, а статическое. Это когда, например, какое-то число вычисляется прям на этапе компиляции, и в исполняемый файл зашивается сразу результат. Типа такого https://gist.github.com/opavlyshak/5467592. Да это действительно никак не отладить, но и пишут такой код далеко не все и далеко не каждый день. Я, честно говоря, даже не знаю в каком еще языке так можно
А понятно, спасибо. Значит я напутал или недопонял.
Не то чтобы все пишут. Там, где он хорошо подходит: где важна каждая копейка производительности, прямой доступ к железу, поддержка уже написанного.
Не нравится фирмам из-за более высокой стоимости разработки (больше человеко-часов на расчётный показатель). Не нравится разработчикам из-за сборной солянки костылей.
Не нравится фирмам из-за более высокой стоимости разработки (больше человеко-часов на расчётный показатель). Не нравится разработчикам из-за сборной солянки костылей.
я учился на С++. хотел работать с ним, но не сложилось, и я занялся БД. грубо говоря, есть два способа разбить яйцо - правильный и не правильный. Так получилось что "не правильно" с точки зрения другого программиста или по объективным причинам на С++ разбить яйцо гораздо проще чем на той же джаве, где есть модный фреймворк "разбиваем яйца".
Изза этого с С++ много головной боли. Ты можешь на нем кодить, но на собеседовании из тебя вынут душу каким-то примером, который надо решать как-то определённым образом. или накодить свою часть кода в существующий проект чтобы потом ломать голову над тем, почему проект с твоим кодом ведет себя как-то не так. Все это делает жизнь труднее, чем в той же джаве, например, где многие вещи вообще делает система за тебя - чистит память например.
Это не значит что он плохой. просто твоих личных страданий может быть больше.
Изза этого с С++ много головной боли. Ты можешь на нем кодить, но на собеседовании из тебя вынут душу каким-то примером, который надо решать как-то определённым образом. или накодить свою часть кода в существующий проект чтобы потом ломать голову над тем, почему проект с твоим кодом ведет себя как-то не так. Все это делает жизнь труднее, чем в той же джаве, например, где многие вещи вообще делает система за тебя - чистит память например.
Это не значит что он плохой. просто твоих личных страданий может быть больше.
А вот у меня наоборот после плюсов жопа горела от джавы. На вопросы "как сделать X в java" раз через два получал ответ "Никак". Плюс к этому используемые без меры исключения, какая-то ебля с боксингом анбоксингом, ссылочные/нессылочные типы, кастрированные дженерики. Может быть дело в эффекте утенка, но джаву я, короче, так и не доучил
ну. у меня ни от чего особо не горело. просто мой уровень программирования был (и есть) не особо выдающийся. Поэтому в начале карьеры я проваливал собеседования по с++ по причине того, что я не знал каких-то любимых именно в этом месте структур или знал их недостаточно.
из своего опыты мне кажется что везде можно сделать что-то как-то. Просто конкретно в джаве много зависит от фреймверка. если какой-то спринг чего-то не мог, то предлагалось не хотеть невозможного, потому что всем нравится спринг и никто не хочет ничего менять.
из своего опыты мне кажется что везде можно сделать что-то как-то. Просто конкретно в джаве много зависит от фреймверка. если какой-то спринг чего-то не мог, то предлагалось не хотеть невозможного, потому что всем нравится спринг и никто не хочет ничего менять.
Пф, как говаривал Линус Торвальдс, "есть два типа языков: которые все ругают и на которых никто не пишет"
Этим Линусом Торвальдсом был Бьёрн Страуструп
Потому что для новичка - это так себе точка входа.
Ну уж прям все. Хрен найдешь нормального плюсовика.
Да дело не в сложности самого языка. Просто работу сложнее найти
Как это работает - всё написано на С++, при этом он сложнее прочих, но платят за него меньше и работу х*й найдёшь? Это даже читается, как баг в матрице.
Он (С++) не сложнее прочих, и платят за него нормально, и предложений дохуя, просто он даётся не каждому :)
Ну смотри:
1. С - это великий язык, он лежит в основе всего, кроме того, где в основе - богоподобный Ассемблер. Веб-сервера, браузеры, базы данных, умная розетка и автомобиль - все имеет в своей основе С. Но он сложный, так как он более низкоуровневый, и менее абстрактный.
С++ зародился как расширение/развитие идеологии С, но с добавлением абстракций, типа объектов, классов, сущностей и т.д. Грубо говоря, тебе как разработчику уже надо было мыслить не типами данных (строка, целое число) и функциями, а ближе к реальности - объектами. Стало гораздо удобнее, гибче и сильнее.
2. Плюсы оказались практически везде. И огромное коммьюнити дописывало свои инструменты. Сейчас, при знании, какие библиотеки использовать, можно выполнить задачу любой сложности, начиная от программирования для чипов в реальном времени, заканчивая моделированием закрытой сети обмена данными с высочайшим уровнем защиты.
3. Плюсы - это не хайп. Это не безопасная корпоративная Java, где отстрелить себе хер практически невозможно, это не "модный" JS и его вариации, где можно написать даже самый херовый код - и он раком-боком, но выполнится. В плюсах ты можешь сделать что угодно, но и ошибка может вылезти в самых неожиданных местах, и никто тебя от нее не защитит, кроме прямоты твоих рук.
4. Засчет вышеперечисленных факторов, научиться писать хороший код на плюсах - это значит сфокусироваться на определенной сфере, но быть универсалом, понимать скрытое функционирование кода и уметь работать с памятью на низком уровне и уметь писать эффективный код, даже будучи джуном, потому что у сеньора обычно задачи на порядки сложнее и не всегда достаточно времени на глубокую проверку того, что ты написал.
5. Из-за этого кажется, что затраченные силы на обучение не соотносятся с оплатой, а работы мало, так как мало кто готов рискнуть взять на работу человека без опыта (хотя, если есть некоммерческий - это большой плюс). И все защищаются меньшей оплатой, снижая потери в случае увольнения по несоответствию заявленной квалификации.
1. С - это великий язык, он лежит в основе всего, кроме того, где в основе - богоподобный Ассемблер. Веб-сервера, браузеры, базы данных, умная розетка и автомобиль - все имеет в своей основе С. Но он сложный, так как он более низкоуровневый, и менее абстрактный.
С++ зародился как расширение/развитие идеологии С, но с добавлением абстракций, типа объектов, классов, сущностей и т.д. Грубо говоря, тебе как разработчику уже надо было мыслить не типами данных (строка, целое число) и функциями, а ближе к реальности - объектами. Стало гораздо удобнее, гибче и сильнее.
2. Плюсы оказались практически везде. И огромное коммьюнити дописывало свои инструменты. Сейчас, при знании, какие библиотеки использовать, можно выполнить задачу любой сложности, начиная от программирования для чипов в реальном времени, заканчивая моделированием закрытой сети обмена данными с высочайшим уровнем защиты.
3. Плюсы - это не хайп. Это не безопасная корпоративная Java, где отстрелить себе хер практически невозможно, это не "модный" JS и его вариации, где можно написать даже самый херовый код - и он раком-боком, но выполнится. В плюсах ты можешь сделать что угодно, но и ошибка может вылезти в самых неожиданных местах, и никто тебя от нее не защитит, кроме прямоты твоих рук.
4. Засчет вышеперечисленных факторов, научиться писать хороший код на плюсах - это значит сфокусироваться на определенной сфере, но быть универсалом, понимать скрытое функционирование кода и уметь работать с памятью на низком уровне и уметь писать эффективный код, даже будучи джуном, потому что у сеньора обычно задачи на порядки сложнее и не всегда достаточно времени на глубокую проверку того, что ты написал.
5. Из-за этого кажется, что затраченные силы на обучение не соотносятся с оплатой, а работы мало, так как мало кто готов рискнуть взять на работу человека без опыта (хотя, если есть некоммерческий - это большой плюс). И все защищаются меньшей оплатой, снижая потери в случае увольнения по несоответствию заявленной квалификации.
Окей. Может заодно холивар устроим на тему какой тогда язык для задачи "по умолчанию" лучший?
не люблю такие холивары. если ктото может решить задачу на языке Х, значит язык Х достаточно хорош. В конечном счет важен финальный продукт, а не язык. Да. тут ктото скажет, что с++ охуенно производительный, говно вопрос - ассемблер вообще ракета. А еще можно логику прямо в процессор прошить, вообще будет заебись.
Если вы смогли решить задачу так чтобы заказчик или вы сами, если вы сам себе заказчик, остались довольны - вы уже охуенны, а ваш язык программирования достаточно хорош.
Если вы смогли решить задачу так чтобы заказчик или вы сами, если вы сам себе заказчик, остались довольны - вы уже охуенны, а ваш язык программирования достаточно хорош.
тот за который платят и с которым бістрее пишется поддерживаемый код.
Я выбираю scratch. Вон народ на нем запилил эмулятор risc-v и можно линукса запускать.
https://scratch.mit.edu/projects/892602496/
https://scratch.mit.edu/projects/892602496/
Современный .NET на *nix. Разумеется, лучше с C#
и тут выходит Rust, такой правильный и красивый
а нет не красивый, его придумал человек который не видел другие языки...
а нет не красивый, его придумал человек который не видел другие языки...
И что там в ржавом некрасивого, кроме explicit lifetime?
внешний вид языка и его оформление
оно страшное, ну возьми ты хоть для примера тайпскрипт...но нет, я придумаю свое нечто страшное....и хтоничное
оно страшное, ну возьми ты хоть для примера тайпскрипт...но нет, я придумаю свое нечто страшное....и хтоничное
Так нихуя и не понял, что это должно значить. Может хоть хтоничные куски кода покажешь?
синтаксис
и он уебищен
и он уебищен
У них есть помимо языка ещё foundation, руководство которого периодически вываливает какую-то дичь. То трейдмарк полиси ебанутую, то главного спикера убирают с собственной конференции со скандалом
explicit lifetime как раз прекрасен. Много лет работал в проекте, где то же самое было на плюсах, таки утомительно
Когда Гендальф был ещё юн и появились компьютеры, встал вопрос - как биты/байты взад-вперёд таскать?
Один умный хоббитс сказал - сделал mem_alloc и раз-раз вот так, раз-раз-раз.
Применений было мало, людей, умеющих писать буферы было много.
И было написано много хорошего софта в Шире.
Всем такой бум понравился, но пришёл ушлый Менеджер-чародей, который не хотел платить зарплаты, а хотел MVP в продакшен. И были наняты урки-девелопперы. Много планок оперативы было сожжено, пока не пришли виртуальные машины.
С тех пор низкоуровненый мемори менеджмент и высокорувневый прикладной макакинг не встречались.
Но буря сношенных мамок краснеет за горизонтам, каждый раз когда пк-порт спотыкается об 30 фпс. Судьба создаст новых героев, которые сводят на свидание мам жадного Менеджера, пройдут по боллотам легаси поддержки и победят дракона Лагает-Купи.
Перевёл его ник (0xFEOD) в десятиричную систему, загуглил, нашлись тормозные колодки (P 65 037), сделал вывод что парень на серьёзную аналитику не претендует, плюсы хейтит чисто для важности.
Мой опыт разработки на с++ - 8 лет
Мой опыт разработки на с++ - 8 лет
Замечаю, что больше всех "хейтят" как раз те, кто почти на нем не писал. Попробовали в самом начале - не зашло и теперь всю оставшуюся жизнь рассказывают всем какой это плохой язык :)
Не знаю, что именно под "хейтом" ты понимаешь, но я вот плюсы не люблю. Пишу на них давно, последний раз дебажил - вчера. И при этом считаю его суб-оптимальным для всех задач, кроме низкоуровневых. И то, не потому, что он такой крутой, а инфраструктуру для других языков не завезли просто. Я думаю, что "любят" плюсы именно плюсовики, которые на других языках писали сильно меньше.
> Я думаю, что "любят" плюсы именно плюсовики, которые на других языках писали сильно меньше.
Так это обратная сторона той же монеты. В крайности как раз такие люди и бросаются, люблю\ненавижу.
А здоровое отношение - это подходит\не подходит, уместно\не уместно.
Так это обратная сторона той же монеты. В крайности как раз такие люди и бросаются, люблю\ненавижу.
А здоровое отношение - это подходит\не подходит, уместно\не уместно.
браться изучать джаву типичная ошибка новичка в с++
С++ не сложный, это просто какой-то миф. Ну вот я уже давно кодаю на С++, и недавно пришлось пересесть на Котлин, и конечно же нихуя не понятно. Потому что я пока мало изучил этот язык. Так что проблема в новичках, которые ноют, а не в языке.
Так ты не изучил, а сравниваешь. Смешно. Вот когда, узнаешь еще пару современных языков до того же уровня что знаешь плюсы - сравнишь. Уверен, не в ползу последнего.
Я знаю Джаву ещё. Да, С++ сложнее, но не на столько, как об этом говорят.
Любой программист ошибается в жизни дважды: первый раз при рождении, второй раз при выборе специальности. Программист на C++ же ошибался в жизни минимум трижды.
Чтобы написать коммент, необходимо залогиниться