Другие языки программирования и технологии

Почему паскаль все еще преподают?

Помогал товарищу, словил вот это
ОН
Олег Нуреев
16 543
Хорошо что не BASIC.
Виталий Дурницын
Виталий Дурницын
20 235
Лучший ответ
Ты ещё Go (вполне модный язык) не видел - там типизация куда жёстче, чем в Pascal. И это позволяет выявлять многие ошибки в логике программы на стадии компиляции.

А в Pascal всё очень просто: хочешь, чтобы этой ошибки не было - явно создай (в блоке type) именованный тип array [1..10] of integer и объявляй переменные / формальные параметры этого типа.

Но когда ты пишешь array [1..10] of integer непосредственно в объявлении переменной или параметра, то каждый раз неявно создаёшь новый безымянный тип, которому принадлежит эта переменная / параметр. А значения разных составных типов нельзя присваивать друг другу.
Потому что это очень хороший язык для знакомства с началами программирования. Специально для этого и был придуман.
А насчет преобразования типов - потому что в Паскале принята именная идентичность типов. Одинаковыми считаются типы с одинаковым именем, а не одинаковой структурой.
Kadir Ari
Kadir Ari
50 083
Хороший вопрос.
Наверное, действительно пора заменять Pascal на что-то более тупое и модненькое, типа Python или Go... или вообще убрать программирование из списка обязательных дисциплин (как в США). А то ведь все равно, из сотни школьников/студентов, не более десятка могут понять, чему их учат - так пусть основная биомасса хоть не страдает бессмысленно.
Вадим Тогъойти
Вадим Тогъойти
60 963
Schtefan Hikmatullah Паскаль он конченый, но такой настольгический.
Это был и есть язык для обучения основам программирования. А преобразовываются только стандартные типы. И то не всегда.
Олег Нуреев так там и преобразовывать же нечего) он одно в то же самое пытается преобразовать.
Левон Арутюнян Скажите это компилятору :-(
Это загадка века. Хотя на самом деле просто учителям не хочется методички 1973 года переделывать, в приципе как было три типа циклов так и осталось, так что они не зря зарплату получают
Такая ошибка случается, если один из них объявлен как type. И это совершенно закономерно - в паскале строгий контроль соответствия типов, без неявных преобразований.
Преподают потому что удобен для обучения: не позволяет заглядывать в дуло. Как это часто бывает с си. Раз ты сам указал, что это различные типы - очень странно возмущаться, что компилятор выполняет твои указания и не дает их смешать.
Сардор Ерметов
Сардор Ерметов
39 077
Олег Нуреев думаю куда лучше было бы не грузить школьцов всей этой строгой структурой, сверхстрогой типизацией и прочим. Какой-нибудь питон ну или уж скретч очень прост для понимания на базовом уровне, а дальше уже можно и добавлять
Всё нормально преобразовывается, если нормально писáть! Вот пример :

Type tip=array [1..10] of integer; var a,b: tip; i: integer; begin for i:=10 downto 1 do a[i]:=i; for i:=1 to 10 begin b[i]:=a[i]; writeln(i:2,b[i]:3] end end.

Куда и что тут не преобразовывается ?

А насчёт изучения Pascal'я: он же фактически существует в куче диалектов, версий и конкретных реализаций. Главные диалекты - turbo, gnu, free, delphi и abc(.net) - имеют между собой большИе отличия. А oberon (то есть компонентный паскаль) - это, короче, паскаль или что? Про версии и конкретные реализации я вообще помалкиваю: есть такие дурацкие самоделки под разные платформы, в которых не работают ни record'ы, ни set'ы и ни файлы. Кто же такую дрянь лепит? Не знаю, но почему-то всегда находятся такие "народные умельцы".

У меня лично в паскале (причём на нормальных версиях, а не на дурацких !) не работали такие конструкции как, например, функции и процедуры в виде параметров других функций и процедур и я ничего не мог с этим поделать, так что приходилось вообще отказываться от функций в виде параметров. Да разве есть такие проблемы в си, плюсах, шарпе или в пайтоне? Вон как, скажем, в пайтоне легко вычисляется одномерный определённый интеграл:

def simp(f,a,b,n):

~~h=(b-a)/n; hp=h/2; s1,s2=f(b-hp),0

~~for i in range(1,n):

~~~~x=a+i*h; s1+=f(x-hp); s2+=f(x)

~~return (f(a)+f(b)+4*s1+2*s2)*h/6

И никаких проблем !

В общем, есть сомнения в паскале как в едином алгоритмическом языке. Есть и сомнения в применении его как учебного средства для обучения началам программирования - от этого никуда не деться !..
Я считаю, что програму образования не меняют хрен его знает с какого года поэтому и преподают