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 или с десктопными ява-приложениями.
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>В обсуждаемом не должно быть цели "после к станку". Даже в ВУЗе при начальном обучении программированию не должно быть такой цели.

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

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


Именно поэтому Паскаль не подходит.
The God is real, unless declared integer.
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>Но после перехода на С всё стало абсолютно кристально понятно сразу же.


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

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


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

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


См. выше.
Да, после Вирта вроде никто такое не повторял (ну, Ruby позаимствовал, один на десятки новых языков).
The God is real, unless declared integer.
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 клиента, не к ночи будь сказано).
The God is real, unless declared integer.
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-указатель (хоть он так и не назывался).
The God is real, unless declared integer.
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...
Пока на собственное сообщение не было ответов, его можно удалить.