Чтобы проработать Шеня и Вирта нужно учить Паскаль?
Привет!
В процессе своего IT самообразования столкнулся с тем, что нужно (читайте: хочется) проработать две книжки:
Программирование Шеня и
Алгоритмы и структуры данных Вирта.
Последняя есть на Обероне, Модуле и Паскале и, так как Шень использует Паскаль, имеет смысл, на мой взгляд, и Вирта читать в адаптации под него, дабы сэкономить себе время.
Я на уровне простеньких и кривеньких классов знаю как Питонить, потихоньку ковыряю Scheme по серии The Little Schemer и могу посмешить народ на плюсах. Учить Паскаль желания нет, но есть желание проработать алгоритмы и структуры данных на статически типизированном языке (Седжвик сложноват, плюсы дальше ковырять пока не хочу, а навыки алгоритмистики прокачивать через них, на мой взгляд, overkill). Крайне уважаю Шеня и доверяю его рекомендателям, а Вирта хочется проработать потому что у него формулировки доставляют куда надо.
Неужели все, кто рекомендует данные книги, специально учили Паскаль для работы с ними? Я понимаю, что настоящий программист освоит синтаксис нового языка за неделю, день, час, минуту и для него язык это только инструмент и вообще постановка вопроса в такой форме унижает саму дисциплину и искусство, но...
TL;DR Как получить максимум от Шеня и Вирта, избежав изучения Паскаля?
То есть по вашему, чтобы читать Кнута, нужно уметь программировать на псевдоязыке? Цилкы, условия везде примерно одинаковые. Не вижу большой проблемы, чтобы транслировать примеры из книги в удобный для вас язык. Скорее всего язык на которм изложено внесет свои небольшие особенности, но не более чем небольшие.
Дмитрий:Нет, не нужно. Чтобы читать Паттерны проектирования четверки язык примеров знать необходимо и на мой взгляд, вопрос в том виде, в котором его поставил я, ближе к этому кейсу.
Я буду рад, если проблем с трансляцией не возникнет. Опасаюсь только, что в некоторых случаях не смогу адекватно переписать (и понять) алгоритм и сделаю это менее эффективно.
postmodernsuperkiller2004: У четверки примеры написаны на плюсах, но это не мешает Java программистам спокойно читать эту книгу. Точно так же как "Чистый Код" Роберта Мартина с примерами на Java спокойно могут читать программисты C++.
Дмитрий: Книжки уровня Вирта и Шеня часто читают люди, которые знают как писать на питоне и, в лучшем случае, js. Синтаксис плюсов, не буду скрывать, для меня оказался очень не прост после динамически типизированного интерпретируемого питона. Синтаксис Java отбил желание учиться программировать на два года. Это вопрос вкуса и интеллекта, наверное. Но в плане алгоритмов люди, которые достаточно хорошо разбираются в плюсах и джаве могут читать Седжвика и Кормена, а люди, которые знают не требовательный скриптовый язык осилить книги такого уровня могут редко.
Роман Мирр: а почему бы и нет. Паскаль (но не турбопаскаль или делфи) сделан так что бы сложные вещи не маскировались простым синтаксисом. Так что это легкий в изучении язык на котором не очень удобно писать серьезные вещи.
vaut: Даст ли его изучение что-то помимо понимания того, что одно и тоже в синтаксисе языка можно выразить разными наборами символов? Какие-то знания принципиально расширяющие горизонт? Типа использования функций в их определении в Scheme или указателей в Си?
postmodernsuperkiller2004: предлагаю изучить основы алгоритмизации на основе Паскаля (или лучше Оберона). Вирт очень не любит излишества и синтаксический сахар, поэтому языки получаются у него очень выразительными. А изучив основы, поймёшь в какую сторону продолжать двигаться.
vaut: Я его задаю для того, чтобы, возможно, найти для себя (и других людей, которые от книг Шеня и Вирта отворачиваются только потому, что жалко времени и памяти мозга на просто еще один синтаксис) мотивацию для изучения Паскаля. Вопрос о его гипотетических особенностях, которые делают его ценным с точки зрения расширения перспектив мышления и эрудиции.
postmodernsuperkiller2004: Важен не столько синтаксис языка, сколько его семантика. А семантика Паскаля куда проще Си. Кроме того, согласен с предыдущей репликой vaut .
Наверно кто-то вбил в голову что Паскаль - это плохой язык. А всё как раз не так.
Роман Мирр: Если Вы имеете в виду мою голову, то нет. Мне рассказали, что время это ограниченный ресурс и к его планированию и распределению стоит подходить с головой.
Тем не менее спасибо за рекомендации по Оберону. Возможно, добавлю его в список на изучение. Единственное, не очень понятно где взять актуальную версию. У Вас, случайно, нет информации по этому поводу?
Вся прелесть Паскаля в том, что он прост. Зная английский на школьном уровне, ты сможешь свободно понимать синтаксис Паскаля.
А синтаксис Оберона ещё проще, чем Паскаль и Модула.
Нумерация массивов в Обероне такая же, как и в Си, идёт с нуля.
VAR
arr: ARRAY 10 OF REAL;
(* структуры/записи *)
date: RECORD
day, month, year: INTEGER
END;
set: SET;
BEGIN
arr[0] := 1.2E-5;
date.day := 12; date.month := 4; date.year := 2020;
set := {1,2, 5..15}
END
Как получить максимум от Шеня и Вирта, избежав изучения Паскаля?
Я так и не понял, чем Паскаль не нравится? У него хороший компилятор, т.е. вы получаете программу, которая выполняется довольно шустро (попробуйте в Матлабе сделать несколько вложенных циклов и тогда получите ощутимую разницу в скорости), но программировать намного проще, чем на С++ (и изучать лучше именно Delphi).
Часто алгоритмы пишут на псевдокоде (псевдоязыке), а этот язык как раз и напоминает Паскаль.