Re[7]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.06.19 16:12
Оценка: +1
Здравствуйте, kov_serg, Вы писали:

M>>Я бы не сказал, что это шум.

M>>А в начале появляется шум. Даже не шум, а куча г.
_>Это не шум это объявление ограничений. В рамках которых описывается дальнейшая программа.

Зачем вообще нужны такие ограничения?
Предварительное объявление переменных — это ранняя форма защитного костыля против проблем с опечатками в переменных, и средство задать тип переменной.
Для своего времени было полезное и ценное решение. Для сейчас — нет. Есть другие средства получше.
Тем более когда речь про разнообразные промежуточные константные значения.

Я бы ещё понял, если бы "ограничениями" было названо, например, неиспользование floating point — ну поставил атрибут на блок кода или целую функцию, и оно не пускает такое в компиляцию — но просто на список переменных... бррр...

M>>Кстати, про RAII слышал?

_>Если вам говорили что RAII вершина управления ресурсами то от вас многое утаили.

А списки var, значит, вершина?
Не понимаю, зачем это замечание.

_>>>Если нужно первое определение переменной то с этим может справиться IDE если не может убираем из объявления и компилятор указывает что вот тут используется не объявленная переменная.

M>>И зачем это нужно?
_>Незнаю но многие упорно хотят видеть где переменная впервые использеутся. С этим спокойно спраиться IDE просто подсвечивая имя под курсором по всему тексту.

Функция "перейти к точке определения" присутствует во всех нормальных современных IDE.

_>
  Скрытый текст
Image: glCtE2Y.png

M>>Опять же. Определение переменной по месту экономит стек. Сейчас это не большая проблема на современных компиляторах, но раньше с этим было хуже
_>Вы серьёзно считаете что компилятор не способен определить когда и где создавать переменные.

Ну так всё-таки зачем их всех называть предварительно?

_>...

M>>Какой замечательный код, который позволяет легко нарваться на неинициализированную переменную
_>Как раз нет. Посмотрите язык zig если ваша переменная должна быть не инициализированны то это надо объявить явно иначе вообще не компилируется.

Ну а какой-нибудь C# сразу подставляет default значение, но компилятор способен выкинуть начальное присвоение, если видит, что обойдётся без него.

По нормальному, да, компилятор способен отработать и вариант со всеми именами с типами вначале, и посреди кода. Но зачем дублировать?
Re[9]: Чем плох Паскаль?
От: pagid Россия  
Дата: 16.06.19 16:48
Оценка: +1
Здравствуйте, Serginio1, Вы писали:

S> Программирование это инструмент. Например нельзя изучать математику без высшей математики.

Значит школьники зря математику на уроках учат. Им бы сначала высшую преподнести, тогда можно и школьной заниматься. Или ты что-то другое называешь изучением, а может быть и математикой
Re[9]: Чем плох Паскаль?
От: Ops Россия  
Дата: 16.06.19 17:28
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

S>Иметь и использовать типы данных — это прекрасно. Не прекрасно засирать этим голову школьникам (и, кстати, школьницам) в обязательном порядке.


Это куда проще многих других школьных концепций. Может производные тоже выкинуть из школьной программы?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[10]: Чем плох Паскаль?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 16.06.19 17:36
Оценка:
Здравствуйте, pagid, Вы писали:

P>Здравствуйте, Serginio1, Вы писали:


S>> Программирование это инструмент. Например нельзя изучать математику без высшей математики.

P>Значит школьники зря математику на уроках учат. Им бы сначала высшую преподнести, тогда можно и школьной заниматься. Или ты что-то другое называешь изучением, а может быть и математикой
Спасибо. Поправлю. Хотел написать "нельзя изучать физику без высшей математики"
и солнце б утром не вставало, когда бы не было меня
Re[9]: Чем плох Паскаль?
От: Sharowarsheg  
Дата: 15.06.19 21:20
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Sharowarsheg, Вы писали:



S>>По математике, может быть и да. А вот будущим билолгам с химиками хочется не вот этой твоей нуднятины с обработкой результатов, а интересного. Жуков там на иголки насаживать, бомбы делать, вот это всё. Обработку им сувать сейчас — отобьешь интерес навсегда.


S> Ну в итоге то вся работа будет связана именно с обработкой данных. И нужно не только жуков на иголки насаживать.


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

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


Да, но в, скажем, химии, формулы свои и не имеют никакого отношения к программированию, а в некоторой части и к математике, по крайней мере до второго курса обучения в институте.

S> А вот зная постановку задачи и её решение все становится значительно проще.


Это хорошая философия, но для института, и то не всегда. В школе нет никаких задач в естественных предметах, где программирование как-то участвует или в постановке задач, или в решении.
Re[10]: Чем плох Паскаль?
От: Sharowarsheg  
Дата: 15.06.19 21:23
Оценка:
Здравствуйте, Ops, Вы писали:

S>>Иметь и использовать типы данных — это прекрасно. Не прекрасно засирать этим голову школьникам (и, кстати, школьницам) в обязательном порядке.


Ops>Это куда проще многих других школьных концепций. Может производные тоже выкинуть из школьной программы?


Во-первых, выкинуть. Во-вторых, дело не только в сложности и простоте, но и в количестве. Например, язык орков гораздо проще английского или немецкого, и, в отличие от производных, может пригодиться, когда смотришь Lord of the rings. Это же не причина включить язык орков в школьную программу?
Re[2]: Чем плох Паскаль?
От: elmal  
Дата: 15.06.19 21:26
Оценка: 16 (2) +2
Здравствуйте, scf, Вы писали:

scf>НО — для начального обучениния избыток парадигм вреден. К примеру, вот что входило в мою школьную программу:

scf>- понятие алгоритма
Допустим, но это на любом языке.
scf>- операторы, переменные, типы, условия, циклы
Допустим, но это на любом языке. При этом не хватает циклов вида для каждого, и это в современном мире основной вид цикла. Цикл со счетчиком в современном мире применяется только тогда, когда начинаешь заниматься оптимизацией.
scf>- процедуры, функции
Допустим, но это есть в любом языке.
scf>- структуры данных: массивы, строки, списки, деревья
А вот это в паскале фигово. Удобно работать только с массивами статической длины. Как только нужны динамические массивы — страх и ужас, реально сложно понять, сложный неудобный синтаксис даже по сравнению с Си. Строки — где поддержка юникода, в современном мире без юникода никуда. Списки и деревья — нужно это иметь в стандартной библиотеке.

scf>- алгоритмы: поиск элементов в масивах, обход списков, обход деревьев, двоичный поиск, решение уравнений методом деления пополам

Самый базовый алгоритм в современном мире — хеширование. А то ведь после паскаля, выпускники всяких прикладных математик московских вызов, которые учили паскаль, реально хреначат потом н квадрат сложность вместо константы в узком месте. И программа считает сутки в результате на миллионах элементов вместо секунд. И это говорю я, которого многие упрекают что я забиваю на оптимизацию на начальном этапе!!!

scf>- ascii графика (типа распечатать таблицу умножения)

scf>- цветная графика — нарисовать пейзаж, анимация, графики, графики трехмерных функций по алгоритму художника
На паскале это делать умрешь.

scf>- программы не требуют ни `public static void main`, ни хитрого кода инициализации консоли/окна/графики

Угу. uses crt, объявляние program my program и т.д. Все там требуется, причем много больше, чем на скриптовых языках. Реалии таковы, что 99 процентов тех, кого пытались учить паскалю в школе, не понимали ни хрена. Во многих случаев из за синтаксиса, слишком много действий нужно сделать для простейших результатов. Сейчас практически везде все делается гораздо проще.

scf>- простой удобный интерактивный отладчик, мнгновенная компиляция

Не такая уж и мгновенная. Отладчик обычный, во всех современных языках не хуже, а в большинстве случаев на порядок проще и лучше.

scf>- строгий структурированный синтаксис на английском языке, без лишних сокращений типа фигурных скобок и навязанных идиом типа значимых отступов

Слишком многословный синтаксис. Причем там до хрена нужно именно что учить. Ибо автокомплита нет ни черта.

scf>- строгая типизация

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

scf>- достаточно низкоуровневый, чтобы рассказывать школьникам про байты, биты, непрерывные многомерные массивы и организацию памяти

Рассказывать школьником про байты можно хоть на JavaScript. Как и про многомерные массивы.
Re[3]: Чем плох Паскаль?
От: borga  
Дата: 15.06.19 21:29
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, borga, Вы писали:


B>>Читая ответы коллег у меня возникает странное чувство непонимания.


B>>Если это касается школы: вы реально считаете что там вот это все о чем Вы спорите важно?

B>>Там ИМХО все изучается на элементарном уровне.
B>>Какие указатели? Вы о чем?

N>Да, там другие грабли, и я их описал
Автор: netch80
Дата: 13.06.19
.


B>>Что же касается более продвинутого уровня.

B>>Вам вот реально важно begin/end или {}?

N>Да. Потому что

N>1) лучше, когда синтаксические средства группировки заметно выделяются формой, чем сливаются с другими словами и идентификаторы.
N>2) например, есть штатные средства перейти на противоположную скобку (любого вида) в каком-нибудь vim, но с begin/end это становится в разы сложнее. Учить редакторы фолдить тоже усложнение.

Это все глупости я даже не буду опровергать.
Человек вполне конкретно расписал вот тут
Автор: scf
Дата: 16.06.19
: вникайте до просветления!
Re[2]: Чем плох Паскаль?
От: Sharowarsheg  
Дата: 15.06.19 21:29
Оценка:
Здравствуйте, scf, Вы писали:

scf>НО — для начального обучениния избыток парадигм вреден. К примеру, вот что входило в мою школьную программу:

scf>- понятие алгоритма
scf>- операторы, переменные, типы, условия, циклы
scf>- процедуры, функции
scf>- структуры данных: массивы, строки, списки, деревья
scf>- алгоритмы: поиск элементов в масивах, обход списков, обход деревьев, двоичный поиск, решение уравнений методом деления пополам
scf>- ascii графика (типа распечатать таблицу умножения)
scf>- цветная графика — нарисовать пейзаж, анимация, графики, графики трехмерных функций по алгоритму художника

scf>Этого списка достаточно, чтобы загрузить школьников до 11 класса включительно. Надеюсь, никто не будет спорить, что а) всё перечисленное нужно


Я буду. Списки выбросить вместе с указателями. Можно и массивы тоже выбросить. Заодно и графики трёхмерных функций, всё равно стереометрия где-то в самом конце последнего класса, если я правильно помню, а к этому времени все уже определятся, будут они поступать на информатику или нет. Те, кто будут, тем факультатив, а остальные пусть хоть стереометрию осилят.
Re[14]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 15.06.19 21:46
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>>>Существующая ситуация состоит в том, что блок repeat-until не является уникальным для паскаля.

N>>Ну да, с третьей-четвёртой попытки нашли случай, когда ему есть эквивалент
ARK>С первой попытки.

История записана

ARK>>>Если с точки зрения языка функция является особенной — то лучше ей дать отдельный синтаксис. Этот подход применяется и не только в учебных языках (см. async-await), ну а уж в учебных сам б-г велел.

N>>Ну вот и дают, например, простановкой атрибутов (ранее — спец. ключевыми словами).
ARK>Ну раз дают, то к чему вопрос был.

К тому, что, повторюсь, особый синтаксис тут задаётся атрибутами и ключевыми словами.
А в варианте Паскаля меняется сам парсер.

N>>А зачем при этом менять метод парсинга?


ARK>Метод парсинга не меняется. Точка означает завершение модуля.


Зачем она нужна тогда? Есть EOF уровня файла. Есть блок begin-end вне пределов любых функций.
Что будет, если сделать комментарии после этой точки? Всё сломается или проигнорирует?
Если второе, то зачем эта точка вообще была нужна?

ARK>>>Текст программы читает человек, а не рантайм.

N>>И пишет тоже, представь себе. И он вполне способен написать и увидеть слово main.
ARK>Э... ну и? Слово program он тоже способен написать и увидеть, чем оно хуже?

Так program или модуль?

N>>>>После Паскаля этого никто не повторял. Даже в Ada нет такого, хотя уж в нём строгостей нагнали. Так что могу считать подтверждённым, что этот бред никому не нужен.

ARK>>>Какие именно языки, предназначенные для обучения, были созданы после паскаля? То, что в промышленных или любительских "никто не повторял" — это не показатель.
N>>Посмотри сам в список.
ARK>Странный список, считать хаскель языком для обучения? Ну и бред.

Он так начинался.

ARK>Ну и да — повторял кто что или не повторял — тоже не особо показатель. Куча языков слепо повторяла и повторяет вредные или убогие концепции (см. ошибка на миллиард долларов или С-like switch с провалами или синтаксическим мусором).


N>>Для "иных" пишут, считаем, все грамотные. А что в случае x = a + b * c; ?


ARK>x = a + (b * c);


ARK>Сразу беглым взглядом четко видно структуру выражения.


Ню ню. Не уверен, что любая команда поддержит такое. Скорее — наоборот.

ARK>Кстати, многие языки и вовсе не имеют приоритета операторов — smalltalk, prolog, lisp, pony, наверняка еще кучу забыл.


Ну так не поэтому ли они не получили популярности?
Re[3]: Чем плох Паскаль?
От: elmal  
Дата: 15.06.19 22:12
Оценка:
Здравствуйте, ksandro, Вы писали:

K>А ведь когда-то именно для паскаля появилась самая крутая IDE. Можно сказать первая IDE в современном понимании (VB не считается). И именно на паскале проще всего было писать оконные приложения под винду...

В том то и дело что это было когда то . Причем очень давно. Для тех времен да, Delphi был неплохим выбором для тех, кому нужно было что то налабать, при этом не являясь профессиональным программистом. Сейчас уже даже в этой нише лучше от дельфей держаться подальше.
Re[10]: Чем плох Паскаль?
От: alpha21264 СССР  
Дата: 16.06.19 01:08
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Может производные тоже выкинуть из школьной программы?


К сожалению, уже выкинули.
http://s19.rimg.info/0871fde0709f1bd37b3b012eb22a4583.gif
Течёт вода Кубань-реки куда велят большевики.
Re[11]: Чем плох Паскаль?
От: pagid Россия  
Дата: 16.06.19 01:30
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>К сожалению, уже выкинули.

Ну не знаю, что-то сомнительно.

Смотрю учебник Мордковича, вижу изучение производных в 10 классе. Смотрю учебник Никольского, вижу производные в 11 классе.
Re[3]: Чем плох Паскаль?
От: Mr.Delphist  
Дата: 16.06.19 01:31
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Не подходит. После Паскаля приходится потом долго вправлять моск в правильную сторону.


Простите, а что за "неправильная" такая сторона у Паскаля? Я вот вообще с Бейсика начинал, много их разных у меня было (Вильнюс, Спектрум, кучка ещё всяких диалектов). Вдруг тоже что-то вправить надо — а не замечаю...

C>В "зарубежных курсах" Паскаль давно похоронили. В качестве первого языка чаще всего берут Питон, затем С/С++/Java.


Но берут-то почему? Подскажу: там есть ругательные буквы БЛ..., есть кусочек ругательного слова ...ИОТ, хотя в целом само слово — хорошее
Re[2]: Чем плох Паскаль?
От: MamutArGud  
Дата: 16.06.19 01:46
Оценка:
scf>НО — для начального обучениния избыток парадигм вреден. К примеру, вот что входило в мою школьную программу:

Отмечу только то, что мне бросилось в глаза. Остальные уже дополнили или дополнят.

scf>- процедуры, функции


Вот только за это Паскаль надо выкидывать и забывать как страшный сон. Только виртовские детища, емнип, на ровном месте создают из одной сужности (функция), две. Иди, попробуй объясни ее ... да хоть кому бы то ни было.

scf>Теперь о плюсах Паскаля:

scf>- программы не требуют ни `public static void main`, ни хитрого кода инициализации консоли/окна/графики

Зато нужны другие вещи, которые надо только зазубрить

scf>- простой удобный интерактивный отладчик, мнгновенная компиляция

scf>- строгий структурированный синтаксис на английском языке, без лишних сокращений типа фигурных скобок и навязанных идиом типа значимых отступов
scf>- строгая типизация
scf>- достаточно низкоуровневый, чтобы рассказывать школьникам про байты, биты, непрерывные многомерные массивы и организацию памяти

С этими плюсами лучше уж Erlang взять
Re[15]: Чем плох Паскаль?
От: AlexRK  
Дата: 16.06.19 03:38
Оценка:
Здравствуйте, netch80, Вы писали:

ARK>>>>Существующая ситуация состоит в том, что блок repeat-until не является уникальным для паскаля.

N>>>Ну да, с третьей-четвёртой попытки нашли случай, когда ему есть эквивалент
ARK>>С первой попытки.
N>История записана

Записана, конечно — вот мое первое сообщение на эту тему: http://rsdn.org/forum/education/7470487.1
Автор: AlexRK
Дата: 14.06.19


В Ц/Ц++ то же самое — в do надо обязательно ставить {}, а в других местах — нет.


Меняем "Ц/Ц++" на "C#/Java" и получаем верное утверждение. Про Ц/Ц++ я не знал (собственно, цикл do вообще никогда не использовал), но это не меняет сути — что паскаль далеко не единственный язык с таким подходом.

N>К тому, что, повторюсь, особый синтаксис тут задаётся атрибутами и ключевыми словами.

N>А в варианте Паскаля меняется сам парсер.

Может, какой-то кривой парсер, написанный непонятно кем, и меняется, но я не вижу объективных причин для этого. Терминатором функции или программы служит end, а не последующий символ.

N>Что будет, если сделать комментарии после этой точки? Всё сломается или проигнорирует?


Где именно — в классическом паскале? Не знаю. Скорее всего, второе.

N>Зачем она нужна тогда? Есть EOF уровня файла. Есть блок begin-end вне пределов любых функций.

N>Если второе, то зачем эта точка вообще была нужна?

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

Можно и без точки обойтись. Можно без точек с запятой после каждой строки. Можно без блоков begin/end или {}. Это всё вопрос вкуса. Вирт сделал язык строгим в такой степени, в какой посчитал нужным.

N>>>И пишет тоже, представь себе. И он вполне способен написать и увидеть слово main.

ARK>>Э... ну и? Слово program он тоже способен написать и увидеть, чем оно хуже?
N>Так program или модуль?

Опять же, где? В классическом паскале, одной из современных реинкарнаций? В классическом вроде бы модулей вообще не было. В современных точкой завершается любой файл с исходным кодом — и программа, и модуль.

ARK>>x = a + (b * c);

ARK>>Сразу беглым взглядом четко видно структуру выражения.
N>Ню ню. Не уверен, что любая команда поддержит такое. Скорее — наоборот.

Вполне возможно. А может и нет. Такие утверждения лучше обосновывать — скажем, цитатами из Code Style известных проектов.

А вообще я немало такого кода насмотрелся, что вопрос скобок в выражениях стоит по значимости где-то очень далеко. Везде, где работал. В гугле и микрософте не работал, не знаю; наверное, там код лучше.

ARK>>Кстати, многие языки и вовсе не имеют приоритета операторов — smalltalk, prolog, lisp, pony, наверняка еще кучу забыл.

N>Ну так не поэтому ли они не получили популярности?

Я считаю, что это крайне маловероятно. Вопрос популярности языков вообще мало коррелирует с их особенностями, по-моему.
Re[3]: Чем плох Паскаль?
От: AlexRK  
Дата: 16.06.19 03:45
Оценка:
Здравствуйте, MamutArGud, Вы писали:

MAG>Вот только за это Паскаль надо выкидывать и забывать как страшный сон. Только виртовские детища, емнип, на ровном месте создают из одной сужности (функция), две. Иди, попробуй объясни ее ... да хоть кому бы то ни было.


Отчего ж, не только виртовские создают из одной сущности две. Страуструповские, ричекернигановские, хейлсберговские, гослинговские детища — они все тоже туда же. Иди попробуй объясни, зачем в сикраше Action и Func ... да хоть кому бы то ни было. Выкинуть и забыть этот весь шлак как страшный сон!
Отредактировано 16.06.2019 3:46 AlexRK . Предыдущая версия .
Re[9]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.06.19 03:56
Оценка: +2
Здравствуйте, kov_serg, Вы писали:

_>>>И вынесенные объявления.

C>>Уродство. Чистейшее уродство из-за повреждения моска Паскалем.
_>Видимо вы уже не способны мыслить. И не видите очевидного.

"Не способны мыслить" и не видят очевидного тут скорее защитники паскалевского стиля:

C>>Я уж не говорю, что все определения нынче легко можно заменить на "auto". В данном случае явный тип переменной по месту служит дополнительной документацией (чтобы не нужно было IDE напрягать), тогда как в варианте "мессиво в начале функции" он полностью бесполезен.


_>Я же об этом и говорю должно быть с auto и выглядеть так:


Пусть по одной ветке тип получает значение complex<float>, по другой double, по третьей — string.
Какой тип будем дедуцировать?

А если тип должен определять, какой из перегруженных вариантов функции должен вызваться?
Re[10]: Чем плох Паскаль?
От: AlexRK  
Дата: 16.06.19 03:59
Оценка: -1
Здравствуйте, netch80, Вы писали:

N>Пусть по одной ветке тип получает значение complex<float>, по другой double, по третьей — string.

N>Какой тип будем дедуцировать?

Вопрос не ко мне, но очевидно же, что compile error.
Re[9]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.06.19 04:00
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

S>>>В школе, хэштаблица? Нет.


N>>Это ваша религия говорит?


S>Да


Ну тогда настоятельно предлагаю обойтись без неё и перейти к аргументации логикой и фактами.

N>>И она хоть как-то это пытается обосновать?

N>>Чем плохо иметь и использовать тип данных "хранилище ключ-значение"?

S>Иметь и использовать типы данных — это прекрасно. Не прекрасно засирать этим голову школьникам (и, кстати, школьницам) в обязательном порядке.


Что именно засирательного тут я предложил?

N>>То есть старательно избегать реальных задач, вместо этого ограничиваясь какими-нибудь "сумма чётных элементов в нечётных позициях массива"?


S>Да. Не упираться в суммы чётных элементов, потому что это массивы, а массивы — тоже лишнее.


Серьёзно? Даже массивы — лишнее?

S> Сумму чётных элементов последователности, или предел последовательности, или что-то такое.


Ну если в языке будет абстрактная последовательность, то он станет чем-то вроде Хаскеля.

S> Все желающие узнать, что такое хештаблица, и чем отличается криптографический хеш от используемого в хештаблице, приглашаются на факультативные занятия информатикой.


А это и не обязательно на таком уровне давать. Достаточно принципа "вот ключи, а вот значения при них".
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.