OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 11:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 145 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 8  След.
Автор Сообщение
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Вторник, 06 Ноябрь, 2018 16:20 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Добавлю еще.
Главный недостаток С++, на мой взгляд, состоит в его главном принципе:
все, что не запрещено (явно) - разрешено.
Именно по этой причине С++ очень плох для первоначального обучения.
Для новичков - это просто катастрофа.
Я в лекциях и на лабах постоянно подчеркиваю противоположность принципов С++ и Оберона (КП).
Поэтому и в Семантике мы сделали принцип Оберона:
все, что не разрешено - запрещено.

Мне, как С++нику с многолетним стажем понятно, что исходно С создавался профессионалами для профессионалов, а отнюдь не для обучения новичков.
Профессионалы в силу опыта жестко соблюдают дисциплину разработки.
Принципы SOLID - наше все.
Методы-функции - МАЛЕНЬКИЕ, каждая делает только ОДНУ работу.
Классы - маленькие, каждый делает ОДНУ работу...
Деление на модули (коих так и нет в С++), и т.д., и т.п.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Вторник, 06 Ноябрь, 2018 21:52 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
С++ плох для всего. Абсолютное зло.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 07:02 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Info21 писал(а):
С++ плох для всего. Абсолютное зло.

Нет, Федор Васильевич.
Поскольку у меня стаж работы с ним более 25 лет могу сказать,
что С++ явно служит испытательным полигоном новых фич.
Разработчики новых языков довольно часто смотрят на С++ и НЕ включают в новый язык то или иное средство С++.
Могу также достаточно уверенно утверждать, что комитет по С++ - это такая локальная песочница,
в которой "чужие не ходят"... :)))
Мужики заигрались в своей песочнице, строят свои песочные замки из песка и на песке и плохо видят, что происходит вокруг.
Это я опять о психологии программистов.
Мне повезло (как обычно), и я - на стыке.
Вижу обе стороны... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 08:08 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Если С++ это песочница, то она просто невероятных размеров, песок расползается во все стороны. И вообще непонятно, как стоят километровые домики из песка на тоненьких ножках, но иногда падают целыми кварталами без видимых причин))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 10:47 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
У Дейкстры это было описано уже много лет назад https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html:
Цитата:
Finally, although the subject is not a pleasant one, I must mention PL/1, a programming language for which the defining documentation is of a frightening size and complexity. Using PL/1 must be like flying a plane with 7000 buttons, switches and handles to manipulate in the cockpit. I absolutely fail to see how we can keep our growing programs firmly within our intellectual grip when by its sheer baroqueness the programming language —our basic tool, mind you!— already escapes our intellectual control. And if I have to describe the influence PL/1 can have on its users, the closest metaphor that comes to my mind is that of a drug. I remember from a symposium on higher level programming language a lecture given in defense of PL/1 by a man who described himself as one of its devoted users. But within a one-hour lecture in praise of PL/1. he managed to ask for the addition of about fifty new “features”, little supposing that the main source of his problems could very well be that it contained already far too many “features”. The speaker displayed all the depressing symptoms of addiction, reduced as he was to the state of mental stagnation in which he could only ask for more, more, more... When FORTRAN has been called an infantile disorder, full PL/1, with its growth characteristics of a dangerous tumor, could turn out to be a fatal disease.

PL/1 заменить на C++ и все останется точно таким же.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 11:20 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
prospero78 писал(а):
Если С++ это песочница, то она просто невероятных размеров, песок расползается во все стороны. И вообще непонятно, как стоят километровые домики из песка на тоненьких ножках, но иногда падают целыми кварталами без видимых причин))

Ну дык!
Кто-то из великих много лет назад (вроде бы даже и до появления С++) сказал: если бы программисты строили дома, то первый же залетевший дятел разрушил всю цивилизацию... :))))

Эта песочница сейчас позволяет писать в самых разных стилях:
- процедурном;
- объектно-ориентированном;
- обобщенном;
- функциональном (с некоторыми доработками)
И еще и метапрограммирование, блин, есть!

Вопрос состоит в самоограничениях пользователя С++.
С этим - БОЛЬШАЯ проблема.

Но еще напомню:
С++ унаследовал ВСЕ свойства С.
Например, нифига не проверять границы массива и целое переполнение.
В угоду эффективности.
Опять же кто-то из великих сказал, что в угоду эффективности было совершено больше глупостей, чем за всю историю человечества (очень приблизительно).
Эффективность была важна в 60-е и начале 70-х.
Сейчас даже персоналка имеет характеристики суперЭВМ 80-х.
Но переполнение целых аппаратурой по-прежнему не отслеживается.
Естественно, не отслеживается и в языках.
Исключение Ада, не?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 11:29 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Кстати, обнаружил 5-тилетней давности статью Архипенкова на хабре:
https://habr.com/company/r-style/blog/185310/
Начало весьма интересное:
Цитата:
А. «Серебряной пули нет», сказал Ф.Брукс еще в прошлом веке и надолго остудил пыл благородных рыцарей от программирования в борьбе с «Драконом сложности». С тех пор «его Величество Дракон» служит оправданием тому, что пользователям вместо одних плохо работающих программ, навязываются все новые и новые, которые не намного лучше, но пожирают все больше ресурсов процессоров и памяти компьютеров («А что? Пипл хавает!» (с) Б.Титамир). В угоду Дракону выращена целая армия программистов типа «code & fix» («делай и переделывай»): «Не умением, а числом!», «Рефакторинг – наше все!», «Программировать могут даже члены республиканской партии!», написано на их знаменах. Чтобы прокормить Дракона, каждый день они создают гигабайты исходного кода, значительная часть которого никогда не будет востребована пользователями. За прошедшие годы этот отвратительный Дракон разросся и стал «Идеей. Исторической необходимостью. Нашим государственным интересом. Могущественным фактором, оправданием наших объединенных усилий».

Не менее занимательное заключение:
Цитата:
Программирование — это новый вид человеческой деятельности, которая по ошибке отнесена к инженерии.
Инженерия – это та область, где применяются законы естественных наук, математики, физики, химии для конструирования новых продуктов. В разработке ПО еще не открыты свои законы Ньютона, нет уравнений Лагранжа или хотя бы сопромата, которые помогли бы спроектировать и доказать правильность архитектуры новой нетривиальной программной системы.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 12:27 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Валерий Лаптев писал(а):
Цитата:
Программирование — это новый вид человеческой деятельности, которая по ошибке отнесена к инженерии.
Инженерия – это та область, где применяются законы естественных наук, математики, физики, химии для конструирования новых продуктов. В разработке ПО еще не открыты свои законы Ньютона, нет уравнений Лагранжа или хотя бы сопромата, которые помогли бы спроектировать и доказать правильность архитектуры новой нетривиальной программной системы.

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

Видимо человек, который написал, что программирование не инженерная дисциплина, ничего не слышал про Дейкстру, Хоара, Флойда и других ученых.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 12:41 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Валерий Лаптев писал(а):
Но переполнение целых аппаратурой по-прежнему не отслеживается.
Чего это вдруг? Устанавливаются специальные флаги. Бери и проверяй.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 14:35 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Kemet писал(а):
Валерий Лаптев писал(а):
Но переполнение целых аппаратурой по-прежнему не отслеживается.
Чего это вдруг? Устанавливаются специальные флаги. Бери и проверяй.

Не возникает прерывания, как при делении на ноль!
Хотя справедливости ради надо сказать, что конкретно в Интел есть команда, позволяющая установить диапазон и проверять.
И прерывание таки возникает.
Но много ли языков ее использует? :)

Так что наше все - это воспитание правильных принципов в программистах.
Самоограничение - основа всего.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 16:03 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Валерий Лаптев писал(а):
С++ унаследовал ВСЕ свойства С
Отнюдь, например, в С++ более строгая типизация в отношении перечислений и указателей.

Цитата:
Например, нифига не проверять границы массива и целое переполнение.
В угоду эффективности.
Такого свойства у С нет. В стандарте это записано как неопределённое поведение, что означает, что его определение отдано на откуп создателям исполнителя языка. Ровно тоже самое верно для Оберона. Просто все по разному распоряжаются свободой, заданной документами. Впрочем, и в С++ можно распорядиться свободой правильно, что в последнее время подтверждается добавлением опций компиляторов -fsanitize=undefined -fsanitize-undefined-trap-on-error.

Немного подробней об отношении неопределённого поведения к безопасности можно почитать в моей заметке Язык C безопаснее Java из-за неопределённого поведения


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 16:49 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Валерий Лаптев писал(а):
Kemet писал(а):
Валерий Лаптев писал(а):
Но переполнение целых аппаратурой по-прежнему не отслеживается.
Чего это вдруг? Устанавливаются специальные флаги. Бери и проверяй.

Не возникает прерывания, как при делении на ноль!

Там не нужно прерывание, а проверить всегда можно. Kemet прав.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Среда, 07 Ноябрь, 2018 16:51 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Rifat писал(а):
Видимо человек, который написал, что программирование не инженерная дисциплина, ничего не слышал про Дейкстру, Хоара, Флойда и других ученых.

Это такой способ узаконить и обосновать тот бардак, который царит в отрасли.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Четверг, 08 Ноябрь, 2018 07:52 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Дома можно строить ровно так же -- не по плану, а на глазок. Если так кто-то делает -- от этого строительство домов не становится гуманитарной дисциплиной.
Так что, выдержка из статьи -- самооправдание и лень.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Четверг, 08 Ноябрь, 2018 08:40 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Валерий Лаптев писал(а):
Хотя справедливости ради надо сказать, что конкретно в Интел есть команда, позволяющая установить диапазон и проверять.
И прерывание таки возникает.
Но много ли языков ее использует? :)

Вот только и INTO, и IBOUND неприлично дороги и становятся все дороже с новыми моделями процессоров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Четверг, 08 Ноябрь, 2018 11:05 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Trurl писал(а):
Вот только и INTO, и IBOUND неприлично дороги и становятся все дороже с новыми моделями процессоров.

То есть, опять во славу эффективности пренебрегаем надежностью.
Не являются ли эффективность и надежность - ортогональными понятиями? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Четверг, 08 Ноябрь, 2018 17:41 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Trurl писал(а):
Вот только и INTO, и IBOUND неприлично дороги и становятся все дороже с новыми моделями процессоров.
В 64 разрядном режиме нет ни INTO, ни BOUND, но производительность проверок особо не страдает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Четверг, 08 Ноябрь, 2018 17:42 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Специфическая роль С++, действительно, как полигона заключается в том, что это единственная площадка, где можно определять новые синтаксисы в статически типизированном языке, находящемся непосредственно над машиной.

Динамических вагон и маленькая тележка, завышенного уровня аля Скала - тоже.

И параллель "Компонентный Паскаль - это то, каким должен был бы быть С++, если бы не совместимость с Си и не принципиальная гарантия свободы выбора способов выстрела в ногу для программиста" - очень ценна, кстати.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Четверг, 08 Ноябрь, 2018 17:50 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Валерий Лаптев писал(а):
Не являются ли эффективность и надежность - ортогональными понятиями? :)
Не являются, потому что между ними есть связь - для обеспечения надёжности проверки должны быть дешёвыми, в том числе и быстрыми. Если это будет не так, то надёжностью в конечном итоге пожертвуют. При этом и глубокие статические проверки корректности и глубокие оптимизации требуют общую часть - анализатор кода. Кстати, в gcc и clang можно рекомендовать собирать программу с высоким уровнем оптимизации - это позволяет выявлять дополнительные ошибки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Критика С++
СообщениеДобавлено: Четверг, 08 Ноябрь, 2018 18:23 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Илья Ермаков писал(а):
И параллель "Компонентный Паскаль - это то, каким должен был бы быть С++, если бы не совместимость с Си и не принципиальная гарантия свободы выбора способов выстрела в ногу для программиста" - очень ценна, кстати.

Поэтому есть мысль определить в ББ подходящее подмножество С++ и переводить его на КП.
Интересно посмотреть, какие могут возникнуть трудности.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 145 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 8  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB