LINUX.ORG.RU
Ответ на: комментарий от LongLiveUbuntu

Да ладно. Ну begin-end вместо скобок, ну переменные обявляются лишь в начале (в старом стандарте Си точно так же было. Что, не знал?), ну с указателями работа через жопу (а может я в то время был малой и тупой и просто не осилил)...
Да вот и вся разница... Так что тут хрен и где палец?

Stahl ★★☆
()
Ответ на: комментарий от anonymous

И да, в хаскелле всё и без комментарием понятно [/trololo-mode off]

Только если писать в «императивном» духе, с явным выделением и передачей аргументов функций, например. Как только перейдешь на бесточечную запись, надо вкуривать каждый шаг. А есть еще и всякая каббала типа TH.

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

Если «категории фп» имеют хоть какую-то поддержку со стороны языка, или он позволяет таковую создать. Иначе будет содомия.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Stahl

ну переменные обявляются лишь в начале (в старом стандарте Си точно так же было. Что, не знал?)

4.2

В Сишечке всегда можно было открыть блок и наделать ещё переменных:

void foo(int a, int b)
{
    int i;
    /* ... */
    if (a == b) {
        int d;
        /* ... */
        {
            char x;
            /* ... */
        }
    }
}

А в Паскале необходимо тащиться в начало подпрограммы и там прописывать все нужные переменные. Хотя в этом есть определённый педагогический аспект: СТРАДАНИЯ при объявлении переменных мягко подталкивают к необходимости более аккуратного разбиения программ на подпрограммы. После этого необходимость вводить переменные посреди подпрограмм пропадает сама собой. Единственное, что не лечится: есть в подпрограмме несколько циклов, то всякие i, j, k торчат наружу. Хотя, может, это подталкивает к тому, чтобы называть счётчики подлиннее.

ilammy ★★★
()
Последнее исправление: ilammy (всего исправлений: 1)
Ответ на: комментарий от quickquest

Я в общем-то соглашусь про топор и паскаль, но есть одна деталь: паскаль убог не только по содержанию (на что пофиг), но по парадигме. Калечить мозги начинающих программистов императивщиной очень и очень вредно.

anonymous
()
Ответ на: комментарий от ilammy

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

Stahl ★★☆
()
Ответ на: комментарий от Stahl

Что есть в Pascal и нет в C

Множества из коробки, нормальные строки, массивы с проверкой границ, нормальный логический тип, нормальный процедурный тип, корректная проверка типов и вообще более строгая проверка типов компилятором (type действительно порождает новый тип в отличие от typedef).

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от ilammy

А в Паскале необходимо тащиться в начало подпрограммы и там прописывать все нужные переменные.

оно уже издохло, поделом.

Deleted
()
Ответ на: комментарий от Virtuos86

Как только перейдешь на бесточечную запись, надо вкуривать каждый шаг.

Использую point free везде, где адекватно. Проблем с вкуриванием не возникает. Наоборот, куда удобнее, чем писать лямбды на каждом шагу.

А есть еще и всякая каббала типа TH.

Ну, до TH пока не дошёл, так что сказать нечего.

Если «категории фп» имеют хоть какую-то поддержку со стороны языка, или он позволяет таковую создать. Иначе будет содомия.

Ну иммутабельность как минимум всегда запилить можно. А это уже большой плюс к лёгкости тестирования, отладки, рефакторинга.

anonymous
()
Ответ на: комментарий от anonymous

Калечить мозги начинающих программистов императивщиной очень и очень вредно.

У начинающих программистов школьного возраста мозги ещё не выросли, калечить нечего. Кстати, предложи адекватную замену PascalABC.NET на маломощном школьном планшете с андроидом. С веб-средой разработки, графикой, учебными примерами, ...

quickquest ★★★★★
()
Ответ на: комментарий от Stahl

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

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от quickquest

программирование на маломощном школьном планшете

Да вы же извращенец!

С веб-средой разработки

Ну точно.

А насчёт графики - емнип в DrRacket был есть графический пакет. Да и не главное это.

У начинающих программистов школьного возраста мозги ещё не выросли, калечить нечего

Ну почему же, у них есть немного математических представлений. А императивщики им начинают долбить, что «x = x + 1» это основа программирования.

anonymous
()
Ответ на: комментарий от quickquest

Кстати, предложи адекватную замену PascalABC.NET на маломощном школьном планшете с андроидом. С веб-средой разработки, графикой, учебными примерами, ...

Javascript?

ilammy ★★★
()
Ответ на: Что есть в Pascal и нет в C от LongLiveUbuntu

Множества из коробки

Не помню уже что там за множества такие...

нормальные строки

Вряд ли в современных реализациях есть поддержка многбайтных кодировок. А без них толку от этих «нормальных» строк не так уж и много.

массивы с проверкой границ

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

нормальный логический тип

В недавно принятом стандарте есть самостоятельный bool.

процедурный тип

Указатель на ф-цию? А что, в Си его нет?:)

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

Stahl ★★☆
()
Ответ на: комментарий от ilammy

В js можно где угодно, но конвенция - обьявлять сначала одним var.

vertexua ★★★★★
()
Ответ на: комментарий от ilammy

Какой маломощный школьный планшет с андроидом?

vertexua ★★★★★
()
Ответ на: комментарий от anonymous

Да вы же извращенец!

Ну, сходи в школу, посмотри: много ли там приличных компьютеров и сколько там извращенцев с андроидами :)

А императивщики им начинают долбить, что «x = x + 1» это основа программирования.

Императивщики учат по «библии» равноапостольного Н.Вирта «Алгоритмы и структуры». И это правильно, всё остальное — опослЯ :)

quickquest ★★★★★
()
Ответ на: комментарий от sdio

Рисунки. Переменная — ячейка (квадратик), массив — набор ячеек и т.д.

Ты серьёзно предлагаешь объяснять всё это на рисунках, без практического применения? У тебя все годные ученики разбегутся, останутся только зубрилки.

anonymous
()
Ответ на: комментарий от sdio

сразу учить химию и физику

это сложные, перегруженные синтаксисом ЯП

русский и математику

это базовые вещи — структуры данных и алгоритмы.

Нет, русский и математика - это языки, которыми описываются структуры данных и алгоритмы химии и физики.

anonymous
()
Ответ на: комментарий от Stahl

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

Мифы о безопасном ПО: уроки знаменитых катастроф

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

А потом удивляемся, почему отстаем... Неужели только массовые расстрелы спасут Родину?

anonymous
()
Ответ на: комментарий от anonymous

До определенного уровня. Базу надо дать. Язык нужен будет но не сразу, о чем я и сказал. Сначала теория, а реализация (язык) это второй этап. А вы сразу: С, питон, джава, ...

sdio ★★★★★
()
Ответ на: комментарий от Stahl

И отключить это поведение никак

{$R-}

В недавно принятом стандарте есть самостоятельный bool.

Которому можно присвоить что угодно, приводемое к целому типу, даже строку. Смысл такого bool?

Указатель на ф-цию? А что, в Си его нет?:)

Сравни

int (func*)(int a, int b)
и
type TFunc = function(a: Integer; b: Integer) : Integer
, какое из них более читаемо?

Вряд ли в современных реализациях есть поддержка многбайтных кодировок. А без них толку от этих «нормальных» строк не так уж и много.

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

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от anonymous

Аналогии всегда неадекватны. Забыли.

Перед тобой человек понятия не имеющий о компьютерах с точки зрения программирования (т.е. человек до этого в лучшем случае там на иконки даблклик делал)

Берем простой язык паскаль и пытаемся его преподать.

Вперед: объясни структуру языка, операторы, циклы и условия, не прыгая в теорию структур и алгоритмов.

sdio ★★★★★
()
Ответ на: комментарий от anonymous

А потом удивляемся, почему отстаем...

Задача средней школы — просвещение, высшей — образование. Много программистов не нужно.

P.S. Отставали, отстаём и отставать будем, ибо «тише едешь — дальше будешь» :)

quickquest ★★★★★
()
Ответ на: комментарий от sdio

Вперед: объясни структуру языка, операторы, циклы и условия, не прыгая в теорию структур и алгоритмов.

Ты не поверишь, но мне таки именно так и объяснили.

Условия, циклы, переменные (не вдаваясь в подробности структур данных), потом массивы (пронумерованные переменные). Потом уже пошли память, сортировки, деревья и прочие радости.

anonymous
()

Питон для первого языка плохо подходит. Первый язык должен быть отвратным неюзабельным говном. Типа бейсика или ассемблера. Чтоб в матах и ненависти рождалась тяга к прекрасному.

kot_otbelivatel
()
Ответ на: комментарий от quickquest

Там полноценный Оберон-07, а в Процессинге искалеченная одноногая «жаба»

Так а разве Оберон не убожество? Даже по сравнению с искалеченной жабой?

Тебя никто не заставляет программировать на нём, но если «злой рок» заставит тебя обучать современную «школоту», то PascalABC.NET — подходящий инструмент для освоения первоначальных понятий и навыков программирования.

Я предпочел бы это делать на Питоне, на худой конец на C#. Т.е. на нормальных языках, которые используются и ничем не уступают паскалям в плане обучения.

Затем Си. Для школоты достаточно.

forCe
()
Ответ на: комментарий от quickquest

Топор — устаревший и откровенно слабый инструмент. Но без него невозможна современная цивилизация :)

А без паскаля - возможна=)

Обучение и работа — разные занятия. Большинство автомобилистов учатся не на тех машинах, на которых ездят в дальнейшем.

Чем PascalABC.NET лучше для обучения, чем тот же C#?

forCe
()
Ответ на: комментарий от slackwarrior

Не застал, но осуждаю :)

Застал к сожалению. Умер - не значит перестали насиловать.

Конпеляет зато быстрее

Мсье способен улавливать наносекунды?

Сомнительная заслуга

...если ты не программист. А если программист, то очень даже. Не нужно каждый раз учить совершенно другой синтаксис и всё такое.

много удивительного ждет тебя

Дам сотню, если ты меня хоть чем нибудь удивишь в этом мире.

SjZ ★★★★★
()
Ответ на: Что есть в Pascal и нет в C от LongLiveUbuntu

Множества из коробки

Они же только с мелкими числами работали. Или я ошибаюсь?

массивы с проверкой границ

В общем случае не нужно

корректная проверка типов и вообще более строгая проверка типов компилятором

В паскале это в основном только мешает, профита не дает.

И вообще, читайте Кернигана «Why Pascal is Not My Favorite Programming Language»

forCe
()
Ответ на: комментарий от SjZ

Не нужно каждый раз учить совершенно другой синтаксис и всё такое.

Иногда лучше выучить новый синтаксис, чем путать старый синтаксис с разной семантикой :D

anonymous
()
Ответ на: комментарий от anonymous

В большинстве своем только тогда, когда со старым всё совсем печально сложилось.

SjZ ★★★★★
()
Ответ на: комментарий от anonymous

Последняя которой пользовался на постоянной основе была 10.04, там был.

SjZ ★★★★★
()
Ответ на: комментарий от Stahl

Не помню уже что там за множества такие...

Весьма и весьма убогие, элементы множества должны быть целые числа в диапазоне от 0 до 255. Вообще в низкоуровневом языке встроенные множества - признак примитивности системы типов.

Вряд ли в современных реализациях есть поддержка многбайтных кодировок

Во FreePascal есть некий WideString, но всё-равно сегодня поддержка Unicode == использование ICU.

Begemoth ★★★★★
()
Ответ на: комментарий от SjZ

Не нужно каждый раз учить совершенно другой синтаксис и всё такое.

Взять, к примеру, C, C++, Java и JavaScript. Сильно тебе поможет знание синтаксиса С при изучении трёх последних языков?

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

Нет, не очень. Но сам факт того, что раньше был знаком с чем-то подобным не помешает.

SjZ ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

А в вот тут написано, что и то и то:

Each of the elements of SetType must be of type TargetType. TargetType can be any ordinal type with a range between 0 and 255. A set can contain at most 255 elements.

Begemoth ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

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

Begemoth ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.