OberonCore

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

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




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

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
budden писал(а):
Слушайте, ну я мехмат МГУ как-никак окончил. Пусть и с синим дипломом. Вот вы посмотрите: в
библиотеке языка А есть функция "включить NumLock", а в языке Б (например, в каком-нибудь условном JavaScript) такой функции нет, и стороннюю библиотеку подключить нельзя, и вызвать внешнюю программу тоже нельзя. На тьюринг полноту все эти особенности не влияют. Теперь что?

А что будет включать программа на языке А, если её запустить на смартфоне?


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

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Trurl писал(а):
А что будет включать программа на языке А, если её запустить на смартфоне?

Проблема в семантике - синтаксические конструкции языка А вполне можно автоматически транслировать в конструкции языка Б, Но получить семантически идентичную программу, в общем случае, невозможно.


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

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
Ну нельзя же так! Программа на языке "А" (или "B" ?) и железо "X" (или "Y" ?) - смешиваем "белое" с "острым".


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

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


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

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

Цитата:
3. Абсолютная бесконтрольность действий с указателями.
Неопределённое поведение - это не асболютная бесконтрольность, а выбор злых буратин.
Возьмём пример:
Код:
static void set(int arr[][4], int i, int j) {
   arr[i][j] = 1111;
}
extern int main(void) {
   int arr[4][4];
   set(arr, 2, -4);
   return 0;
}
Код:
$ cc -g -fsanitize=undefined -fsanitize-undefined-trap-on-error violation.c -o violation
$ gdb -q violation
Reading symbols from violation...done.
(gdb) run
Starting program: violation
...
Program received signal SIGILL, Illegal instruction.
0x0000555555554697 in set (arr=0x7fffffffd8b0, i=2, j=-4) at violation.c:2
2       arr[i][j] = 1111;
(gdb) backtrace
#0  0x0000555555554697 in set (arr=0x7fffffffd8b0, i=2, j=-4) at violation.c:2
#1  0x00005555555546e5 in main () at violation.c:6
По-моему, какой-то контроль имеется

Цитата:
Все остальное - это мелочи.
Сложный и объёмный язык с ловушками понимания, который никто не знает досконально - это мелочи? Это одна из главных проблем.


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

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Цитата:
Сложный и объёмный язык с ловушками понимания

Вот это - следствие 1 принципа, и 2 принципа.
Я, например, собираюсь в Семантике сделать конструкторы.
Но умолчаний - не будет.
Посмотрим, что получится... :)


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Что здесь делается по умолчанию, и что из некорректного здесь разрешено?
Код:
bool a,b;
while (a = b)
-------------
a = ask ? b : c + 1;
----------------
char const *s[] = {
    "\n\n\n\n\n\n\n",
    "\n\n\n\n\n\n\n,"
    "\n\n\n\n\n\n\n",
    "\n\n\n\n\n\n\n",
};
---------------
void set(char a[4]) {
     for (int i = 0; i < 4; i++) a[i] = '0';
}
int main() {
    char a[3];
    set(a);
}
----------------
void set(int *p, int &r) {
    if (p != (void *)0);
         *p = 3;
    // ссылка не указатель, не может быть нулевой
    r = 4;
}
void set(int *p) {
    // не может, не может
    set(p, *p);
}
int main() {
    // и, действительно, не может
    set((int *)0);
}


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

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


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Раз уж Вы упомянули эти проблемы, можете подробней их осветить? Желательно с примерами из жизни.
Боюсь, правда, что они тоже подпадут по "грамотные программисты так не пишут". Вот, к примеру, как грамотный программист может написать функцию преобразования, которая может привести к проблемам? Он либо не станет её писать, либо сделает её беспроблемной.


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

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Не, писать не буду.
Никогда не занимался написанием специальных проблемных программ.
Пишу сразу правильно, иногда возникают проблемы, которые исправляю и забываю.
Лучше вы напишите, что, помимо мной написанного, вы считаете важным недостатком С++.


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Я уже описал их и указал на то, что это не является следствиями выведенных Вами 3-х пунктов.

Для меня главный недостаток - это то, что С++ популярен, поэтому приходится иметь с ним дело. Иногда только для того, чтобы выкинуть. Например, недавно коллега написал генератор С++ кода с использованием vector. На мою часть это оказывало ужасное последствия - код собирался неприемлемо долго, а если не закрыть браузер и IDE, то и просто вешало систему из-за нехватки 8 ГиБ памяти. Без малейшего усложнения кода я заменил в генераторе кода С++ с vector на Си c массивами и время сборки упало в ~30 раз. Зачем мне эта возня?
Или пытаешься прочитать код, а там что-то вроде
Код:
(a ->* b)()
Зачем мне разбираться в этих крючках, количество которых со временем только растёт? Я, конечно, понимаю, что с новыми стандартами С++ становится чуть лучше, но одновременно с этим и хуже, и это нельзя исправить. Не мучайте мутанта, лучше закопайте.


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

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


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

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


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

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


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
В этой части, конечно, там не полигон, а палата инвалидов.

Но в части шаблонов в сочетании с семантикой введения операций над сущностями в плюсовых библиотеках есть, на что глянуть. В плане экспериментов с DSL. А потом отжать и упростить до укладывания даже на текущий КП.


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

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Это надо не в Си с крестами смотреть, а в первоисточниках.


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

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Да вот хотя бы с шаблонами.
Посмотрели, как это в С++ - и сделали по-другому в Додиезе и Ява...


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
Да вот хотя бы с шаблонами.
Посмотрели, как это в С++ - и сделали по-другому в Додиезе и Ява...
Можно пояснить про шаблоны в Додиезе и Яве?


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

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
В отличие от шаблонов C++ генерики додиеза и явы используются по прямому назначению: создание обобщенного класса с параметром-типом.
В С++ шаблоны - это полный по тьюрингу язык. Вследствие чего возникло целое направление - метапрограммирование. это УЖОС_УЖОС_УЖОС!
А в гкенериках додиеза и явы - все просто и понятно.
И работают генерики на этапе выполнения - в отличие от С++, где шаблоны работают на этапе компиляции...


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Могу пояснить за Java. В ней сделали дженерики не "не так, как в С++", а так, чтобы это в неё влезло с учётом наследия. Как здесь помогает опыт С++ неясно. Сама идея был обкатана задолго до С++. В дженериках Java есть своя особенная кривизна.

Ещё было бы интересно узнать, кто позиционирует С++ как полигон для отладки? Неужели у Страуструпа такое есть?


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

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


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

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


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

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