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

Программисты Python, Pascal или Scheme для обучения программированию?

Учусь на 5 курсе филфака. специальность не нравится. Пошел туда учиться лишь из-за родителей, они у меня оба филологи. Честно говоря учусь отлично, но без удовольствия. Мне всегда нравилась сфера IT, постоянно изучал различное ПО, осваивал ОС Linux. И разумеется загорелся желанием стать программистом, так как сисадминство меня не привлекало. Решил спросить совета у знающих ( в моем вузе факультет вычислительной техники и ПО ), тамошние программисты велели мне начать с кучи разных языков. Для себя выделил 3 языка, с их слов это Python, Pascal, Scheme. Вроде Pascal они прошли на 1-ом курсе, Scheme на втором семестре 1 курса, а python изучали отдельно вместе с django. Им больше всего нравился Python сказал из-за синтаксиса. Нашел литературу по этим языка по Scheme SICP, честно ни хрена не понял. По Pascal учебник Фаронова, тут все более-менее понятно. По Python книга Марка Лутса, информация так же понятно как в паскале. Я просто пробежался по первым главам, чтобы оценить. Так вот стал вопрос с какого языка начать, чтобы освоить азы программирования? Какой язык для этого наиболее подходит, Python/Pascal/Sheme? Да и если не сложно аргументируйте ответы. Заранее спасибо!
Азы, пожалуй, с Паскаля. Можно, конечно, и C, но там легче наделать глупостей, хотя, с другой стороны, полезно начать привыкать к C-подобному синтаксису ещё с самого начала, т. к. многие языки программирования синтаксически схожи с C (С++, С#, Java и т. п.) . Scheme'a у нас не было, но был курс по "чистому" Лиспу. В результате, этот язык произвел на меня огромное впечатление. Lisp и Scheme (он же просто один из диалектов Лиспа) - это совершенно иная парадигма программирования, а именно функциональная, декларативная (впрочем, Лисп мультипарадигменен) . Здесь вместо итерации отдается предпочтение рекурсии, а явные операции присваивания - недопустимы и считаются дурным тоном, как оператор безусловного перехода "костыль"-goto в императивных языках. Подход к решению задач здесь другой.

Пример на Лиспе:
Допустим, из списка l нужно выбрать элементы, кратные числу 3:
(defun %-3 (l)
(cond
((null l) nil) ; пустой список - остановка рекурсии
((equal (% (car l) 3) 0) (cons (car l) (%-3 (cdr l)))) ; если условие выполнилось, то соединяем голову с хвостом
(t (%-3 (cdr l))))) ; в противном случае - игнорируем элемент и продолжаем рекурсивный обход списка

Пример:
(%-3 '(1 2 3 4 5 6 7 8 9))
==> (3 6 9)
Т. о. , результатом работы функции будет список (3 6 9). Ничего лишнего, никакого синтаксического сахара, все кратко, лаконично и изящно.

Аналогичное, но на императивном языке программирования (код Pascal/Delphi):
const
n = 9;
type
arr = array [1..n] of Integer;
var
i: Integer;
a: arr;
k: Integer;

function KR_3 (a: arr): arr;
var
k,i: Integer;
b: arr;
begin
k:= 0;
for i := 1 to n do
begin
if ((a mod 3) = 0) then
begin
k := k+1;
b[k] := a;
end;
end;
Result:= b;
end;

begin

for i:= 1 to n do begin a := i; write(a,' '); end; // Массив а заполнен: [1,2,3,4,5,6,7,8,9]

writeln;

for i:= 1 to n do write((KR_3(a)) ,' '); // KR_3 возвращает массив чисел, кратных трём: [3,6,9]

end.

Как видно, сплошь и рядом - объявления переменных, контроль над типами данных, присвоения, инициализации, итерации. Здесь человеку вроде бы и проще понять, ведь все действия записываются последовательно, но, на самом деле, гораздо больше времени уходит на возню с синтаксическими особенностями языка, представление данных в памяти, чем на решение, собственно, самой задачи.

Надеюсь, разница понятна.
Знать желательно и то, и другое.

С Python не знаком, но, слышал, что у него масса достоинств: даже функциональное программирование поддерживает и работу в цикле REPL.
Чынгыз Надиев
Чынгыз Надиев
543
Лучший ответ
Все три упомянутых языка хороши, но каждый по-своему, и тут важна последовательность изучения:
1. Pascal
2. Python
3. Scheme
Собственно после Паскаля можно изучать любые языки, поскольку он даёт основы и прививает строгую дисциплину программирования. Вот ссылка для начала:
Песни о Паскале - азбука программиста
Саня ....
Саня ....
4 846
паскаль он проще и понятней) и скачивается бесплатно распространен))