Re[2]: Чем плох Паскаль?
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.06.19 21:51
Оценка:
Здравствуйте, netch80, Вы писали:

N>И это только то, через что я сам "продирал" своих учеников, когда им было необходимо научиться этому кошмару.


Я б добавил к этому отсутствие возможности вернуть из функции указатель на функцию, при том что сами по себе такие указатели в языке есть.

Насколько я могу судить, причина тому — странная причудь Вирта оформлять вызов фукнции без аргументов в виде имени функции без скобок. Отсюда невозможность понять, если такая функция возвращает указатель на функцию, то что имеется ввиду, она сама или возвращаемое ей значение. Ну и как сомнительное решение этпй проблемы — отсутствие возможности вернуть указатель на функцию вообще.
Re[2]: Чем плох Паскаль?
От: kov_serg Россия  
Дата: 13.06.19 22:09
Оценка: -1
Здравствуйте, elmal, Вы писали:

E>5) В современном мире паскаль прививает крайне хреновый стиль программирования. Только недавно сделали возможность объявлять переменные по месту использования;


Ради срача

Почему некоторые люди считают что объявление переменных по месту это хорошо? Чем плохо заранее объявить что понадобиться, а не равномерно размызвать безполезное гавно по коду.
Отредактировано 13.06.2019 22:14 kov_serg . Предыдущая версия .
Re[3]: Чем плох Паскаль?
От: marcopolo Россия  
Дата: 13.06.19 22:10
Оценка: :)
Здравствуйте, Pzz, Вы писали:

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


Ну все, что вы тут понаписали, не стоит и выдеенного яйца по сравнению с теми тормозными сишными приложениями, которые сейчас пишут с использованием .dot или с десктопными ява-приложениями.
http://images.vfl.ru/ii/1458025806/ffafd500/11874919.png
Re[3]: Чем плох Паскаль?
От: Cyberax Марс  
Дата: 13.06.19 22:58
Оценка: +3
Здравствуйте, kov_serg, Вы писали:

_>Почему некоторые люди считают что объявление переменных по месту это хорошо? Чем плохо заранее объявить что понадобиться, а не равномерно размызвать безполезное гавно по коду.

Какой смысл даёт объявление переменных в начале? Для любого современного компилятора это совершенно пофиг.

Для программиста не пофиг, так как нельзя с первого взгляда увидеть, где переменная получает значение. Ну и с иммутабельностью по умолчанию оно тоже никак не дружит.
Sapienti sat!
Re[3]: Чем плох Паскаль?
От: Cyberax Марс  
Дата: 13.06.19 23:01
Оценка: +1 :))) :)
Здравствуйте, Слава, Вы писали:

C>> работа с динамическими структурами вообще совсем никакая. Указатели в Паскале придумали какие-то извращенцы.

С>Что там не так с указалями?
Совершенно дикий синтаксис, который ни на что не похож. Я начинал учить программирование с Паскали, и так и ниасилил их.

Но после перехода на С всё стало абсолютно кристально понятно сразу же.
Sapienti sat!
Re[2]: Чем плох Паскаль?
От: Sharowarsheg  
Дата: 13.06.19 23:18
Оценка:
Здравствуйте, Don Reba, Вы писали:

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


В общеобразовательной школе? Хорошо если с доски спишут. Все, кто, учась в школе, могут понемногу участвовать в чём угодно, будут участвовать и так, и изучить два языка сразу — у этих не будет проблем. Остальным — чем проще, тем лучше.
Re: Чем плох Паскаль?
От: itmanager85  
Дата: 14.06.19 03:21
Оценка:
Здравствуйте, Cicero, Вы писали:

C>Очень часто это слышу: Паскаль(иногда конкретизируют: Turbo Pascal) не подходят для обучения программированию.

C>Обычно аргументов нет. Самый "сильный" аргумент — это несовременный!

зачем обучать мёртвому языку ?

намного более актуальны c/c++ | Java | C# | PHP | MySql — после них хоть к станку (особенно если JS/JQuery добавить)
Re[2]: Чем плох Паскаль?
От: pagid Россия  
Дата: 14.06.19 03:46
Оценка: +1 -1
Здравствуйте, itmanager85, Вы писали:

I>зачем обучать мёртвому языку ?

Для понимания принципов.

I>намного более актуальны c/c++ | Java | C# | PHP | MySql — после них хоть к станку

В обсуждаемом не должно быть цели "после к станку". Даже в ВУЗе при начальном обучении программированию не должно быть такой цели.
I>(особенно если JS/JQuery добавить)
это мусор к программированию как учебной дисциплине не имеющий никакого отношения.
Re[3]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.06.19 04:50
Оценка: +2
Здравствуйте, pagid, Вы писали:

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


I>>зачем обучать мёртвому языку ?

P>Для понимания принципов.

Из этого не следует необходимость обучения мёртвому языку.
Из живых на эту роль отлично подходит, например, Go (ближайший по духу), Java, C#, Python. Для системного уровня — C.

I>>намного более актуальны c/c++ | Java | C# | PHP | MySql — после них хоть к станку

P>В обсуждаемом не должно быть цели "после к станку". Даже в ВУЗе при начальном обучении программированию не должно быть такой цели.

Во-первых, должна быть. Учат чему-то полезному, и конкретный язык здесь, хоть и не первоочередная составляющая, но важная. А если ещё при обучении человек сразу включается в реальную работу и видит полезный выхлоп от своей работы — то это ещё больше работает на качество обучения.
Во-вторых, тем более не должно быть цели учить тому, после чего надо заново переучиваться.
Отредактировано 14.06.2019 5:09 netch80 . Предыдущая версия .
Re[3]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.06.19 04:51
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

S>Остальным — чем проще, тем лучше.


Именно поэтому Паскаль не подходит.
Re[4]: Чем плох Паскаль?
От: Sharowarsheg  
Дата: 14.06.19 04:52
Оценка:
Здравствуйте, netch80, Вы писали:

S>>Остальным — чем проще, тем лучше.


N>Именно поэтому Паскаль не подходит.


Да, но если сказать, давайте учить Бейсик в размере 1995 года, вой же будет ещё больше, не так ли?
Re[4]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.06.19 04:53
Оценка: +1 -1
Здравствуйте, Cyberax, Вы писали:

C>>> работа с динамическими структурами вообще совсем никакая. Указатели в Паскале придумали какие-то извращенцы.

С>>Что там не так с указалями?
C>Совершенно дикий синтаксис, который ни на что не похож. Я начинал учить программирование с Паскали, и так и ниасилил их.

C>Но после перехода на С всё стало абсолютно кристально понятно сразу же.


Ну это ты зря. Как раз с синтаксисом указателей у Паскаля лучше.
Re[3]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.06.19 05:07
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я б добавил к этому отсутствие возможности вернуть из функции указатель на функцию, при том что сами по себе такие указатели в языке есть.


В расширениях есть, типа такого. Это стало, вроде бы, универсальным синтаксисом между вендорами.
Без '@', да, считается за вызов.

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


См. выше.
Да, после Вирта вроде никто такое не повторял (ну, Ruby позаимствовал, один на десятки новых языков).
Re[5]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.06.19 05:25
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:

S>>>Остальным — чем проще, тем лучше.

N>>Именно поэтому Паскаль не подходит.
S>Да, но если сказать, давайте учить Бейсик в размере 1995 года, вой же будет ещё больше, не так ли?

Так, всё так. Вот потому надо смотреть на что-то современное. При этом язык должен как минимум:

1. Не требовать заката солнца вручную там, где сейчас все предоставляют современные возможности. Это относится, например, к типу map (dictionary, hash — где как зовётся), или к базовым возможностям дженериков; возможность объявить const на значение переменной...

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

3. Позволять форсировать типизацию даже выше стандартной статики (из банальностей — что-то в духе type body_temperature = 34.0 .. 42.0).

4. Или должен форсировать стиль начиная с отступов (Python, Nim), или идти со встроенными средствами проверки и форсирования (включая режим в IDE).

5. Иметь обширную стандартную библиотеку (типа: тот же sort() должен быть; писать самому, конечно, хорошо для учёбы, но постоянно таскать за собой такую реализацию — нуегона) и репозиторий модулей на расширенные случаи (вплоть до чего-то типа CORBA клиента, не к ночи будь сказано).
Re[5]: Чем плох Паскаль?
От: Cyberax Марс  
Дата: 14.06.19 05:36
Оценка: +3 :)
Здравствуйте, netch80, Вы писали:

C>>Но после перехода на С всё стало абсолютно кристально понятно сразу же.

N>Ну это ты зря. Как раз с синтаксисом указателей у Паскаля лучше.
В Паскале массивы — это нечто магическое (есть синтаксис динамических массивов, но тоже странный), а в С сразу всё становится понятно при работе с арифметикой. Такое же слышал и от других людей.
Sapienti sat!
Re[6]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.06.19 05:45
Оценка: +4
Здравствуйте, Cyberax, Вы писали:

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


C>>>Но после перехода на С всё стало абсолютно кристально понятно сразу же.

N>>Ну это ты зря. Как раз с синтаксисом указателей у Паскаля лучше.
C>В Паскале массивы — это нечто магическое (есть синтаксис динамических массивов, но тоже странный), а в С сразу всё становится понятно при работе с арифметикой. Такое же слышал и от других людей.

Я имею в виду то, что уже просто var x: ^integer; это лучше, чем int *x; и чем сложнее конструкция, тем легче её читать в таком виде.

Для динамических массивов, да, методы работы совершенно другие — указатель под капотом, а в явном виде зовёшь setlength и дальше работаешь как с обычным. Получается где-то так же, как std::vector<тип>& в C++.

Фокус в виде a[i] == i[a] == *(a+i) там не одобряют в чистом виде. Но в борландовской линии, по-моему, писать явно (a+i)^ было можно и нужно, если тебе в явном виде передали unsafe-указатель (хоть он так и не назывался).
Re[4]: Чем плох Паскаль?
От: kov_serg Россия  
Дата: 14.06.19 06:25
Оценка:
Здравствуйте, Cyberax, Вы писали:

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


_>>Почему некоторые люди считают что объявление переменных по месту это хорошо? Чем плохо заранее объявить что понадобиться, а не равномерно размызвать безполезное гавно по коду.

C>Какой смысл даёт объявление переменных в начале? Для любого современного компилятора это совершенно пофиг.
Дело в том что объявление переменных в начале убирает синтаксический шум внутри, видно сколько и какие переменные используются. Появляется дисциплина и порядок.
Если нужно первое определение переменной то с этим может справиться IDE если не может убираем из объявления и компилятор указывает что вот тут используется не объявленная переменная.

C>Для программиста не пофиг, так как нельзя с первого взгляда увидеть, где переменная получает значение.

Так какие проблемы если так надо можно добавть резервное слово для первого присвоения скажем let. Оно будет единообразно указывать на первое определение.
C>Ну и с иммутабельностью по умолчанию оно тоже никак не дружит.
С какого перепоя. Компилятору всё равно где объявление. Так что оно будет работать как и работало.
SomeTypeWithLongNameAndAlotOfParametersAndNamespaces somevar;
auto v1,v2,v3,v4;
....

let somevar=fn(); // 1st time
let v1="string";
let v2=3.14;
let v3=fn();
if (cond) let v4=1; else let v4=2;
...
somevar=fn(); // 2nd time
Отредактировано 14.06.2019 6:27 kov_serg . Предыдущая версия . Еще …
Отредактировано 14.06.2019 6:26 kov_serg . Предыдущая версия .
Re[5]: Чем плох Паскаль?
От: T4r4sB Россия  
Дата: 14.06.19 06:31
Оценка: +2
Здравствуйте, kov_serg, Вы писали:

C>>Ну и с иммутабельностью по умолчанию оно тоже никак не дружит.

_>С какого перепоя. Компилятору всё равно где объявление. Так что оно будет работать как и работало.

Потому что значение переменной может зависеть от результата выполнения сложного блока, то есть объявить её со значением до этого блока нельзя.
А ещё переменная может быть нужна лишь в одной из веток алгоритма. А в другой ветке нужна другая переменная того же типа. И в итоге получаем либо распухший список переменных в начале функции, либо вредную привычку вместо index для одной ветки и tmp для другой заводить одну specail_int и использовать её везде. Сейчас вы скажете, надо функции мельче делать?
Re[6]: Чем плох Паскаль?
От: kov_serg Россия  
Дата: 14.06.19 06:48
Оценка:
Здравствуйте, T4r4sB, Вы писали:

C>>>Ну и с иммутабельностью по умолчанию оно тоже никак не дружит.

_>>С какого перепоя. Компилятору всё равно где объявление. Так что оно будет работать как и работало.

TB>Потому что значение переменной может зависеть от результата выполнения сложного блока, то есть объявить её со значением до этого блока нельзя.

Мы просто объявляем переменную в начале блока.

TB>А ещё переменная может быть нужна лишь в одной из веток алгоритма. А в другой ветке нужна другая переменная того же типа. И в итоге получаем либо распухший список переменных в начале функции, либо вредную привычку вместо index для одной ветки и tmp для другой заводить одну specail_int и использовать её везде. Сейчас вы скажете, надо функции мельче делать?

Нет просто каждый блок может иметь свой список переменных.
Re[3]: Чем плох Паскаль?
От: elmal  
Дата: 14.06.19 07:02
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Почему некоторые люди считают что объявление переменных по месту это хорошо? Чем плохо заранее объявить что понадобиться, а не равномерно размызвать безполезное гавно по коду.

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