Паскаль сложный язык программирования или нет? - Компьютерные вопросы

Вопрос Паскаль сложный язык программирования или нет?

Регистрация
2 Сен 2013
Сообщения
84
Репутация
0
Спасибо
0
Монет
0
Паскаль сложный язык программирования или нет?
 
Регистрация
22 Июн 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
Классический Pascal - предельно простой язык программирования. Проще него только позже разработанные автором Паскаля Modula-2 и языки семейства Oberon (из которых самый простой - Oberon-07). Другое дело, что позже - в коммерческих реализациях - Pascal оброс модульностью и ООП и превратился в Delphi / FreePascal - эти языки уже в несколько раз сложнее, чем Pascal. Впрочем, они полностью поддерживают написание кода на классическом Паскале. Особняком стоит PascalABC.Net: это вообще не Pascal, а C#, загримированный под Pascal - со всеми особенностями, присущими C-style языкам. Код, написанный на Pascal, вызовет в PascalABC.Net предупреждения компилятора. Впрочем, работать такой код будет. В Pascal ты всё делаешь сам - точно понимая, что и зачем пишешь. И это наилучший вариант для начального обучения программированию. В Delphi многое уже делается за тебя - встроенными в язык библиотеками. Потому понимания того, что ты делаешь, намного меньше. В PascalABC.Net сложнейшие вещи можно сделать одной строчкой - вообще не понимая, что происходит внутри и насколько это эффективно в данном конкретном случае. Потому PascalABC.Net совершенно непригоден для начального обучения программированию - также, как Python и JavaScript.
 
Регистрация
28 Дек 2020
Сообщения
7
Репутация
0
Спасибо
0
Монет
0
PascalABC.Net совершенно непригоден для начального обучения программированию.
А можно поинтересоваться, кто Вы по профессии - школьный учитель или преподаватель вуза? Какой у Вас опыт обучения детей программированию? Или это было Ваше личное мнение?
Стало быть, первым языком программирования должен быть Паскаль, каким его создал Н.Вирт? Без строк, без динамического распределения памяти, без классов, без библиотек, требующий реализации вручную простейших и постоянно повторяющихся алгоритмов. Делающий для массового школьника практически нереальным решение заданий ЕГЭ, связанных с динамическим программированием. Заставляющий с нуля каждый раз писать навязшую в зубах пузырьковую сортировку и нахождение максимумов/минимумов. Ведь ваше утверждение ведет именно к этому. А давайте тогда учить ассемблер? Это еще больше углубит понимание процессов, лежащих в основе.

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

Вы много общались с учителями информатики? Вы слышали их претензии к программе по информатике? К учебникам с Турбо Паскалем? Вы знаете, почему они массово кинулись переучиваться на Пайтон? Да им всего лишь насточертел этот Турбо Паскаль с бесконечным переписыванием ненужных для дела конструкций! Или Вам куда важнее выказывать свою стойкую привязанность к TP/BP/FPC ?

Теперь о PascalАВС.NЕТ.
Во-первых, никто не мешает на нем писать в стиле Н.Вирта. Да, в нем не поработаешь с указателями (как и в любом другом .NET-языке) из-за особенностей .NET-среды. Но современные языки программирования давно отошли от этой концепции: в них применяется ссылочная объектная модель и это мэнстрим, нравится Вам это или нет. Вы как себе представляете работу со ссылками в языке, за который ратуете? Никак? Типа, было хорошо для наших дедов, будет хорошо и для нас?
Во-вторых, показав один раз реализацию сортировки или чего-то другого, можно затем пользоваться встроенной в язык, экономя время и не занимаясь постоянно тупым копированием кода. Это делает обучение более эффективным, экономя время на разбор более важных и нужных вещей. Теперь можно показать и научить пользоваться динамическими структурами, контейнерами, разобраться с абстрактными типами данных. И все это, не меняя сетки часов, отведенных для изучения информатики.
В третьих, это еще и помощь при сдаче ЕГЭ. Умея писать короткий, но емкий и алгоритмически понятный код, в котором вероятность ошибиться крайне невысока, школьник получает экономию времени и снижение экзаменационного стресса. А это очень важные факторы.
В четвертых, как Вы сами заметили, такой паскаль - фактически C#, который изучается в большинстве вузов. И школьник придет туда, уже зная концепции .NET среды и умея пользоваться ее библиотеками. Переход на C# происходит в кратчайшие сроки и безболезненно. Это плохо, верно же? ))

И последнее. Паскаль - простой язык, если он Turbo Pascal. Простой, потому что он использует минимум синтаксических конструкций и примитивов. Простой настолько, что в нем сложно написать что-нибудь не совсем простое, посему от него и отказались. Паскаль - если он PascalАВС.NЕТ - язык, имеющий такую сложность, какую вы сами от него захотите получить.
 
Регистрация
28 Дек 2020
Сообщения
7
Репутация
0
Спасибо
0
Монет
0
В продолжение темы.
Реализация того же Turbo Pascal или Free Pascal имеет некоторые допущения, расходящиеся как с "Писанием от Н. Вирта", так и со стандартом языка, где прямо указано: "After a for-statement is executed, other than being left by a goto-statement, the control-variable shall be undefined". Также, неопределенным считается значение описанной, но не инициализированной переменной.
Посему, использование ТР/FPC провоцирует некорректную реализацию алгоритмов, что не может признаваться допустимым при обучении программированию.

Вот пример задания, найденного мной вчера на ресурсе "Знания":
Переведите с Паскаль на Фортран-90
Код:
var
  i, j, k, s, x, y: integer;
  a: array[1..7, 1..7] of integer;

begin
  x := 2;
  y := 6;
  for k := 1 to 4 do
  begin
    for i := x - 1 to y + 1 do
    begin
      s := s + 1;
      a[x - 1, i] := s;
    end;
    for j := x to y + 1 do
    begin
      s := s + 1;
      a[j, i] := s;
    end;
    for i := y downto x - 1 do
    begin
      s := s + 1;
      a[y + 1, i] := s;
    end;
    for j := y downto x do
    begin
      s := s + 1;
      a[j, i] := s;
    end;
    x := x + 1;
    y := y - 1;
  end;
  
  writeln('massive 15 = ');
  for i := 1 to 7 do
  begin
    for j := 1 to 7 do
      write(a[i, j]:5);
    writeln;
  end;
  
end.
Так вот, при попытке перевести код "один в один" программа не работает. Проблема в том, что переменная s не инициализирована (Фортран этого не дюбит), а главное - в двух местах переменная, использованная в качестве параметра цикла, после выхода из цикла используется с тем значением, которое она получила в конкретной реализации Паскаля в нарушение даже стандарта этого языка. Но... работает же!
Если использовать PascalАВС.NЕТ для выполнения этой программы, она тоже "пройдет" из-за того, что выполняется требование программной совместимости с ранними версиями. Но если переписать код так, как требуют каноны PascalАВС.NЕТ, мы увидим допущенные прегрешения и получим программу, переносимую в другие языки. Вот вам и ответ на вопрос, почему важно отказаться от ранних "паскалей".
 
Сверху Снизу