Не понятно, почему вы обозначили в качестве проблем то, что вы обозначили. Например - растет стандартная библиотека. Да, растет. А если бы не росла - люди бы больше смотрели в сторону других не стандартных библиотек. Ну и в чем принципиальное отличие между : "изучать стандартную библиотеку", и "изучать не стандартную библиотеку"? Итоговый объем знаний, который нужно выучить, все равно окажется примерно тот же. Уж лучше тогда стандартное.
@@princessmary5556 а что плохого в том, чтобы смотреть в сторону нестандартных библиотек? Я хочу работать с сетью, Вася с графикой, Петя с параллелизмом - каждый ищет себе библиотеку, изучает её досконально и пишет на ней, оставаясь вообще ни-бум бум в библиотеках коллег. Когда же в стандарт лезут эти предметы, а не остаются в библиотеках, ты хочешь-не хочешь, а вынужден их изучать, пусть не все сразу, но пунктик "изучить С++" над тобой нависает! И на собеседованиях имеют получается право спросить что угодно из гигантской стандартной библиотеки просто за то что ты осмелился заявить "знаю С++".
@@kosiak10851 Вы спрашиваете: *а что плохого в том, чтобы смотреть в сторону нестандартных библиотек?* Во-первых, я не давала вам повода думать, будто бы в этом есть что-то плохое. А во-вторых, смотря с чем сравнивать. Если сравнивать стандартную с аналогичной, но нестандартной, то очевидно, что стандартная лучше, ровно по той же самой причине, по которой стандарт лучше, чем его отсутствие.
@@kosiak10851 Вы пишете: *пунктик "изучить С++" над тобой нависает* Вы бредите. Надо мной ничего не нависает. А что касается собеседований: там имеют право спросить по любой теме, которая не противоречит действующему законодательству. А про тех, кто осмелился заявить, что знает с++, есть поговорка: "назвался груздем - полезай в кузов".
Главная и фундаментальная проблема C++ это неуёмные стандартизаторы. Их цель закопать C++, причём окончательно и бесповоротно, ну чтоб уж точно никто не выкопал. И они идут к успеху семимильными шагами.
Никто же не заставляет переходить на новые стандарты плюсов. А так, многое что добавляется в новые стандарты - часто это уже реализованные и проверенные фишки из библиотеки Boost. Наоборот круто, что стандарт расширяется, и что допустим не нужно везде тащить тяжеловесный boost
@@emil2072 так именно что заставляют. Если раньше можно было не учить ни boost, ни Qt, а прочитать книгу Страуструпа и тренироваться чисто в её рамках, чтобы на собеседовании честно заявить "я знаю С++" . То сейчас знать С++ это что-то нереальное. Пока учишь один стандарт - выходит другой.
Вы пишете: *Главная и фундаментальная проблема C++ это неуёмные стандартизаторы. Их цель закопать C++, причём окончательно и бесповоротно, ну чтоб уж точно никто не выкопал* Бред.
@@comrad93 Мне, для начала, его самому подтянуть нужно. Я его знаю только теоретически и на уровне Hello, World. Но рассказать, чем хорош, чем плох очень хочется. Всё же, это крайне интересный язык. Да и его поддержку добавляют уже везде, начиная от фронтенда, заканчивая ядром Linux.
@@RussianITGuy Лично мне C++ очень не нравится непредсказуемостью в неопределенном поведении и ООП, которое совсем не подходит изначальному языку. Из-за своей сложности на нем трудно работать с джунами. Вообще C++ пора либо сильно менять, либо не использовать для новых проектов.
Всё, что перечислил автор в видео - это полная ерунда. Проблема С++ в том, что он самого начала представляет собой собрание плохих решений на уровне языка. Одной из главных особенностей C++ перед C являет реализация ООП. Но реализация эта оказалась довольно плохой. Бьёрн Страуструпп решил, что если к структурам добавить методы, то они станут классами. Но есть нюанс - память под него выделяется на стеке. В итоге при присваивании происходит копирование полей. И в классах С++ получилось тоже самое. Если класс не содержит указателей, то проблем нет. Например, какой-нибудь класс Vector3, у которого только три поля x, y и z типа double, проблем создавать не будет. А вот если внутри класса есть указатели, то начинаются проблемы. Например, у класса MyClass2 есть метод: MyClass1 MyClass2::getMyClass1(); Тут за счёт копирования возникнет как минимум два экземпляра класса MyClass1. И если в MyClass1 есть указатель на динамическую память, то возникает проблема - какой из экземпляров несёт ответственность за высвобождение структур динамической памяти? Можно использовать ссылку: MyClass1 & MyClass2::getMyClass1(); Копирования не будет. Но ссылки в C++ имеют свои недостатки. Со ссылкой будет другая проблема - ссылка должна существовать и после окончания вызова метода getMyClass1(), поэтому создать экземпляр MyClass1 внутри метода getMyClass1() и отдать его по ссылке не получится. Можно переопределить оператор присваивания и в нём копировать структуры данных в динамической памяти. Но, во-первых, это усложнение, во-вторых это создаёт большие дополнительные расходы времени процессора. Можно создавать вместо одного класса MyClass1 создавать два класса: MyClass1 и MyClass1Container. Класс MyClass1Container будет содержать все данные, а также счётчик ссылок, а MyClass1 будет содержать только ссылку на MyClass1Container, а также будет предоставлять интерфейс. Но, во-первых, это усложнение, а во-вторых, возникают вопрсы с наследованием. Можно воспользоваться умными указателями, но с умными указателями тоже есть проблемы, хотя бы сам факт, что их существует несколько штук только в одном STL - это уже плохо. В итоге Бьёрн Страуструпп хотел построить дворец, а получил деревенский туалет с выгребной ямой, которая всё больше и больше наполняется плохими решениями как на уровне языка, так и на уровне STL. Глядя на это, я прекрасно понимаю Линуса Торвальдса, который готов выгнать из команды любого программиста, который будет предлагать C++ для решения той или иной задачи.
@@tohoto2183 Вы так и не поняли этого недостатка С++, полагая, что добавление к каждому классу в проекте конструктора копирования - это хорошее решение. А я считаю, что это залипуха на изначально плохое решение на уровне языка.
@@AndreyPokidov Там идет побитовое копирование ,надо просто это знать. Было бы как-то по другому получили бы в другом месте затык ,ну плюсы низкоуровневые ,скорость как красота -страшная сила ,которая требует жертв. Питон возьми там свои нюансы по коллекциям увидишь . Я понимаю ,что многие хотели бы ,чтобы их там по рукам били сразу или капканов вообще не было в языке,но на то оно и низкоуровневое программирование и многие возможные ошибки должны быть исключены еще в стадии обучении программиста,его культурой написания кода. Хотя тут еще нейронки на помощь скоро должны прийти ,чтобы в наши косяки нас же рылом тыкали ,глядишь и полноценно Си вернется в веб даже.
@@tohoto2183 Побитовое копирование больших объектов и скорость? Ой вей! Вы вообще не поняли, что я хочу сказать. P. S. > полноценно Си вернется в веб даже Во-первых, не путайте С и С++ - это разные языки. Во-вторых, ни C, ни С++ в Web полноценно никогда не было. В Web изначально был Perl, а потом PHP, Java, .NET и Python. Есть ещё Go. Для C и C++ в Web места нет, несмотря на то, что для C++ есть фреймвёрк Wt
А какие ещё недостатки C++ вы видите, что мешает разработке?
Не понятно, почему вы обозначили в качестве проблем то, что вы обозначили. Например - растет стандартная библиотека. Да, растет. А если бы не росла - люди бы больше смотрели в сторону других не стандартных библиотек. Ну и в чем принципиальное отличие между : "изучать стандартную библиотеку", и "изучать не стандартную библиотеку"? Итоговый объем знаний, который нужно выучить, все равно окажется примерно тот же. Уж лучше тогда стандартное.
отсутсвие стандартных системы сборки и менеддера пакетов. Привет Rust с cargo
@@princessmary5556 а что плохого в том, чтобы смотреть в сторону нестандартных библиотек? Я хочу работать с сетью, Вася с графикой, Петя с параллелизмом - каждый ищет себе библиотеку, изучает её досконально и пишет на ней, оставаясь вообще ни-бум бум в библиотеках коллег. Когда же в стандарт лезут эти предметы, а не остаются в библиотеках, ты хочешь-не хочешь, а вынужден их изучать, пусть не все сразу, но пунктик "изучить С++" над тобой нависает!
И на собеседованиях имеют получается право спросить что угодно из гигантской стандартной библиотеки просто за то что ты осмелился заявить "знаю С++".
@@kosiak10851 Вы спрашиваете: *а что плохого в том, чтобы смотреть в сторону нестандартных библиотек?* Во-первых, я не давала вам повода думать, будто бы в этом есть что-то плохое. А во-вторых, смотря с чем сравнивать. Если сравнивать стандартную с аналогичной, но нестандартной, то очевидно, что стандартная лучше, ровно по той же самой причине, по которой стандарт лучше, чем его отсутствие.
@@kosiak10851 Вы пишете: *пунктик "изучить С++" над тобой нависает* Вы бредите. Надо мной ничего не нависает. А что касается собеседований: там имеют право спросить по любой теме, которая не противоречит действующему законодательству. А про тех, кто осмелился заявить, что знает с++, есть поговорка: "назвался груздем - полезай в кузов".
Всё по факту. Выдал базу.
Главная и фундаментальная проблема C++ это неуёмные стандартизаторы. Их цель закопать C++, причём окончательно и бесповоротно, ну чтоб уж точно никто не выкопал. И они идут к успеху семимильными шагами.
Никто же не заставляет переходить на новые стандарты плюсов. А так, многое что добавляется в новые стандарты - часто это уже реализованные и проверенные фишки из библиотеки Boost. Наоборот круто, что стандарт расширяется, и что допустим не нужно везде тащить тяжеловесный boost
@@emil2072 так именно что заставляют. Если раньше можно было не учить ни boost, ни Qt, а прочитать книгу Страуструпа и тренироваться чисто в её рамках, чтобы на собеседовании честно заявить "я знаю С++" .
То сейчас знать С++ это что-то нереальное. Пока учишь один стандарт - выходит другой.
@@kosiak10851 Бред. Никто вас не заставляет учить с++.
Вы пишете: *Главная и фундаментальная проблема C++ это неуёмные стандартизаторы. Их цель закопать C++, причём окончательно и бесповоротно, ну чтоб уж точно никто не выкопал* Бред.
@@princessmary5556 обоснуй
Лайк однозначно
Спасибо. Очень интересно.
еее, раст
Хороший жеж язык :) Как минимум, своей экосистемой. Именно как язык он мне синтаксисом не нравится, хотя концептуально он хорош
@@RussianITGuy сделаешь видос про раст?
@@comrad93 Мне, для начала, его самому подтянуть нужно. Я его знаю только теоретически и на уровне Hello, World. Но рассказать, чем хорош, чем плох очень хочется. Всё же, это крайне интересный язык. Да и его поддержку добавляют уже везде, начиная от фронтенда, заканчивая ядром Linux.
@@RussianITGuy Лично мне C++ очень не нравится непредсказуемостью в неопределенном поведении и ООП, которое совсем не подходит изначальному языку. Из-за своей сложности на нем трудно работать с джунами.
Вообще C++ пора либо сильно менять, либо не использовать для новых проектов.
@@vas_._sfer6157 А вы хотите, что бы с++ был предсказуемым в неопределенном поведении? У вас с логикой как вообще?
Правильный совет, возмите за образец Раст.
А лучше просто Раст, вместо плюсов :)
Всё, что перечислил автор в видео - это полная ерунда.
Проблема С++ в том, что он самого начала представляет собой собрание плохих решений на уровне языка.
Одной из главных особенностей C++ перед C являет реализация ООП. Но реализация эта оказалась довольно плохой.
Бьёрн Страуструпп решил, что если к структурам добавить методы, то они станут классами. Но есть нюанс - память под него выделяется на стеке. В итоге при присваивании происходит копирование полей. И в классах С++ получилось тоже самое.
Если класс не содержит указателей, то проблем нет. Например, какой-нибудь класс Vector3, у которого только три поля x, y и z типа double, проблем создавать не будет.
А вот если внутри класса есть указатели, то начинаются проблемы.
Например, у класса MyClass2 есть метод:
MyClass1 MyClass2::getMyClass1();
Тут за счёт копирования возникнет как минимум два экземпляра класса MyClass1. И если в MyClass1 есть указатель на динамическую память, то возникает проблема - какой из экземпляров несёт ответственность за высвобождение структур динамической памяти?
Можно использовать ссылку:
MyClass1 & MyClass2::getMyClass1();
Копирования не будет. Но ссылки в C++ имеют свои недостатки. Со ссылкой будет другая проблема - ссылка должна существовать и после окончания вызова метода getMyClass1(), поэтому создать экземпляр MyClass1 внутри метода getMyClass1() и отдать его по ссылке не получится.
Можно переопределить оператор присваивания и в нём копировать структуры данных в динамической памяти. Но, во-первых, это усложнение, во-вторых это создаёт большие дополнительные расходы времени процессора.
Можно создавать вместо одного класса MyClass1 создавать два класса: MyClass1 и MyClass1Container. Класс MyClass1Container будет содержать все данные, а также счётчик ссылок, а MyClass1 будет содержать только ссылку на MyClass1Container, а также будет предоставлять интерфейс. Но, во-первых, это усложнение, а во-вторых, возникают вопрсы с наследованием.
Можно воспользоваться умными указателями, но с умными указателями тоже есть проблемы, хотя бы сам факт, что их существует несколько штук только в одном STL - это уже плохо.
В итоге Бьёрн Страуструпп хотел построить дворец, а получил деревенский туалет с выгребной ямой, которая всё больше и больше наполняется плохими решениями как на уровне языка, так и на уровне STL.
Глядя на это, я прекрасно понимаю Линуса Торвальдса, который готов выгнать из команды любого программиста, который будет предлагать C++ для решения той или иной задачи.
А просто конструктор копирования применить не пробывали ?
@@tohoto2183 Вы так и не поняли этого недостатка С++, полагая, что добавление к каждому классу в проекте конструктора копирования - это хорошее решение.
А я считаю, что это залипуха на изначально плохое решение на уровне языка.
@@AndreyPokidov Там идет побитовое копирование ,надо просто это знать. Было бы как-то по другому получили бы в другом месте затык ,ну плюсы низкоуровневые ,скорость как красота -страшная сила ,которая требует жертв. Питон возьми там свои нюансы по коллекциям увидишь . Я понимаю ,что многие хотели бы ,чтобы их там по рукам били сразу или капканов вообще не было в языке,но на то оно и низкоуровневое программирование и многие возможные ошибки должны быть исключены еще в стадии обучении программиста,его культурой написания кода. Хотя тут еще нейронки на помощь скоро должны прийти ,чтобы в наши косяки нас же рылом тыкали ,глядишь и полноценно Си вернется в веб даже.
@@tohoto2183 Побитовое копирование больших объектов и скорость? Ой вей!
Вы вообще не поняли, что я хочу сказать.
P. S.
> полноценно Си вернется в веб даже
Во-первых, не путайте С и С++ - это разные языки.
Во-вторых, ни C, ни С++ в Web полноценно никогда не было.
В Web изначально был Perl, а потом PHP, Java, .NET и Python. Есть ещё Go. Для C и C++ в Web места нет, несмотря на то, что для C++ есть фреймвёрк Wt
как вообще связана тема модели памяти с темой выбора парадигмы программирования?
тёплое и мягкое