LINUX.ORG.RU

История изменений

Исправление CrX, (текущая версия) :

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

Способы эти я бы назвал «снизу вверх» и «сверху вниз».

При первом мы начинаем с устройства компьютера (не опускаясь прям до физики, на логическом уровне): процессора, регистров, памяти, а изучение программирования начинаем с ассемблера, потом переходим на Си (как вариант, можно начать сразу с Си в простом виде и без углубления во всякие библиотеки, чётко поясняя, где что происходит, и какова цена того или иного действия). После этого можно перейти, например, на кресты или Objective C, затем разучить различные парадигмы и приёмы и знакомиться уже совсем с другими языками (хоть вообще лисп и хаскель — тут уже по вкусу на этом этапе).

При втором мы начинаем с математической логики и основ алгоритмов. Программируем на языке с высоким уровнем абстракции и низким порогом вхождения, например тот же Python. Учимся именно строить задачи и «объяснять компьютеру, что ты от него хочешь», упор на логику исполнения программы. Постепенно по ходу углубляемся в то, как всё устроено на более низких уровнях, переходим к оптимизации. Точно так же параллельно изучаем и ООП и функциональщину, Python это вполне неплохо позволяет. Далее, в теории немного осознав, что происходит на более низких уровнях, можно переходить к более низкоуровневым языкам, например Rust или тот же Си. Учить в конце ассемблер или нет — уже по желанию, но вообще желательно.

Если пройти весь путь, то и в том и в другом случае результат и знания получается плюс-минус одинаковые. При этом разным людям гораздо легче заходит или один или другой — кому как. Обычно они сами при этом думают, что их способ — единстенный верный. Но это не так, зависит от устройства психики, видимо, или что-то типа того — я не психолог и не нейробиолог, я не знаю, почему так, вижу только, что одним людям гораздо легче даётся так, а другим эдак, как факт.

С чего начинать в твоём случае, я даже не знаю. Pascal не сильно много преимуществ даст в плане обучения по сравнению с Python. Типы данных разве что там удобнее будет объяснить, это да. Так что в каком-то смысле он лучше. Но с другой стороны, Python подходит по второму способу (в моём понимании выше), и, что немаловажно, на Python ученики смогут сразу себе реально полезные скрипты писать, автоматизировать какую-нибудь рутину, а это всегда приятно и очень хорошо способствует мотивации дальнейшего обучения и любознательности. На Паскале тоже можно, конечно, но сам понимаешь, как это будет ощущаться — больше как обуза и как обучение чисто ради обучения — а это не всем просто выдержать и заставить себя сохранить именно живой интерес к объекту изучения. Так что, наверное, всё же Python, ИМХО, будет несколько более правильным выбором. Но только при условии, что всё время будет держаться в головах, что это именно высокий уровень абстракции, и что в итоге всё равно будем учить и другие языки тоже.

P.S. Главное с C# и Java не начинай. Они приводят к необратимому повреждению мозга, если их учить именно в качестве первого языка.

Исходная версия CrX, :

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

Способы эти я бы назвал «снизу вверх» и «сверху вниз».

При первом мы начинаем с устройства компьютера (не опускаясь прям до физики, на логическом уровне): процессора, регистров, памяти, а изучение программирования начинаем с ассемблера, потом переходим на Си (как вариант, можно начать сразу с Си в простом виде и без углубления во всякие библиотеки, чётко поясняя, где что происходит, и какова цена того или иного действия). После этого можно перейти, например, на кресты или Objective C, затем разучить различные парадигмы и приёмы и знакомиться уже совсем с другими языками (хоть вообще лисп и хаскель — тут уже по вкусу на этом этапе).

При втором мы начинаем с математической логики и основ алгоритмов. Программируем на языке с высоким уровнем абстракции и низким порогом вхождения, например тот же Python. Учимся именно строить задачи и «объяснять компьютеру, что ты от него хочешь», упор на логику исполнения программы. Постепенно по ходу углубляемся в то, как всё устроено на более низких уровнях, переходим к оптимизации. Точно так же параллельно изучаем и ООП и функциональщину, Python это вполне неплохо позволяет. Далее, в теории немного осознав, что происходит на более низких уровнях, можно переходить к более низкоуровневым языкам, например Rust или тот же Си. Учить в конце ассемблер или нет — уже по желанию, но вообще желательно.

Если пройти весь путь, то и в том и в другом случае результат и знания получается плюс-минус одинаковые. При этом разным людям гораздо легче заходит или один или другой — кому как. Обычно они сами при этом думают, что их способ — единстенный верный. Но это не так, зависит от устройства психики, видимо, или что-то типа того — я не психолог и не нейробиолог, я не знаю, почему так, вижу только, что одним людям гораздо легче даётся так, а другим эдак, как факт.

С чего начинать в твоём случае, я даже не знаю. Pascal не сильно много преимуществ даст в плане обучения по сравнению с Python. Типы данных разве что там удобнее будет объяснить, это да. Так что в каком-то смысле он лучше. Но с другой стороны, Python подходит по второму способу (в моём понимании выше), и, что немаловажно, на Python ученики смогут сразу себе реально полезные скрипты писать, автоматизировать какую-нибудь рутину, а это всегда приятно и очень хорошо способствует мотивации дальнейшего обучения и любознательности. На Паскале тоже можно, конечно, но сам понимаешь, как это будет ощущаться — больше как обуза и как обучение чисто ради обучения — а это не всем просто выдержать и заставить себя сохранить именно живой интерес к объекту изучения. Так что, наверное, всё же Python, ИМХО, будет несколько более правильным выбором. Но только при условии, что всё время будет держаться в головах, что это именно высокий уровень абстракции, и что в итоге всё равно будем учить и другие языки тоже.