Я прочитал здесь на P.SE больше вопросов, в которых начинающим программистам рекомендуется выбрать Python в качестве первого языка программирования.
Не поймите меня неправильно, мне нравится Python. Мне это очень нравится! Но его философия вращается вокруг «Мы все взрослые по обоюдному согласию».
С точки зрения опыта / знаний начинающий программист - это не взрослый человек. Что в некотором роде означает, что легче застрелить себя в ногу и приобрести некоторые вредные привычки, даже если вы пережили рану.
Я думаю, что на «более статичном» языке было бы сложнее выстрелить себе в ногу, поскольку это будет более ограничительным.
Вернемся к моему вопросу. Почему Python рекомендуется в качестве языка программирования начального уровня?
Какие моменты делают его хорошим для обучения языку программирования. Или ... это личное предпочтение советника?
I'm thinking that in a "more static" language it would be harder to shoot yourself in the foot
- ну, C и C ++ статически типизированы, и вы были бы очень, очень удивлены, увидев, сколько разных способов вы можете от них оторваться, используя их ...Ответы:
IMO, наиболее заметные моменты, которые говорят на Python как на языке начального уровня, таковы:
источник
Привет, мир в Python:
Привет, мир на Java:
Привет, мир в C:
Пришло время поговорить о компиляции для двух других, и Python намного проще. Мне нужно поговорить только об одной идее, на которую я заинтересован, - все механизмы, которые усложняют дело, просто исчезают в python. Я могу подождать, пока они не будут готовы говорить о модулях, не нужно торопиться, чтобы получить stdio.h для простых программ. Я могу подождать, пока они не будут готовы к таким темам, как классы, не нужно спешить с ними для их первых программ. У него есть REPL для дурачения в командной строке. Python очень хорош в концептуальном минимуме. Это хорошо, потому что помогает начинающим сосредоточиться на задаче.
источник
Это необычная точка зрения.
Согласие взрослых - очень маленькая часть философии Python. Это, конечно, не "вращается" вокруг этого. Это даже не часть "Zen of Python", которую вы получаете, если делаете это
import this
в интерпретаторе.Другие вещи, такие как «явный лучше, чем неявный», «простой лучше, чем сложный» и «количество читабельности», гораздо более важны для Python и показывают, почему Python является хорошим первым языком.
В любом случае, «согласные взрослые» на самом деле говорят только об отсутствии частных объектов в Python. Что само по себе, на мой взгляд, является еще одним показателем того, почему это хорошо для начинающих: вам не нужно беспокоиться о таких вещах, как интерфейсы, когда вы только начинаете.
источник
private
поляpublic
в хакинг? Кстати, в Python вы можете поставить перед свойством свойство с подчеркиванием, чтобы сделать его приватным (хотя на самом деле не скрытым)Есть два разных пункта. Когда вы воспитываете ребенка, вы должны поместить их в пузырь, в котором есть только безопасные вещи, или позволить им играть во дворе, где они могут споткнуться и упасть?
Быть внутри пузыря очень ограничительно. Вы должны написать свой код очень конкретным образом, чтобы он работал. Когда люди только начинают, все, что не может сделать то, что он хочет, считается расточительным. Это также может привести к «Я не знаю, почему это там, но кто-то сказал мне, что это необходимо».
В Python этого не существует. Если вы хотите сказать «Hello World», вы просто
print "Hello World"
. Использование Python в качестве точки входа позволяет кому-то взяться за дело и просто написать код, который ему нужен, чтобы добиться желаемого. Первый программист не может понять значение инкапсуляции, прежде чем они поймут основы программирования.Кроме того, в небольших программах безопасность типов не является большой проблемой. Любой код, который пишет начинающий разработчик, будет небольшим и ограниченным. Только когда у вас будет большая кодовая база с большим количеством разделов, которые вы используете в качестве уровней абстракции и не будете активно думать, когда безопасность типов показывает, что вы гарантированно делаете то, что вам нужно. Когда весь код находится в одном файле, проще просто посмотреть на функцию и посмотреть, что вы сделали неправильно.
Другие преимущества:
источник
Python - отличный язык для начинающих, потому что он делает простые вещи простыми, в то же время делая достаточно сложные вещи возможными, чтобы он не считался бесполезным игрушечным языком, и даже опытные программисты находят его подходящим инструментом для некоторых задач. В частности, простые вещи включают в себя:
Абсолютный минимум стандартного кода для простых программ.
Вывоз мусора.
Динамическая типизация.
Чистый, простой синтаксис.
Сравните это, например, с Java или C ++ и трудностью объяснения всех понятий, связанных с программой «Hello, world». Сложные вещи включают в себя:
Самоанализ (эквивалент Python для отражения).
Обезьяна исправления.
Вещи, которые можно сделать с помощью огромной стандартной библиотеки.
Тем не менее, никто, кто знает только Python, не является хорошим программистом, потому что никто, кто знает только один язык или один стиль языка, не является хорошим программистом. Любой, кто серьезно относится к программированию, должен в конечном итоге научиться чему-то более низкому уровню, но не тогда, когда он / она все еще пытается ухватиться за управление потоком, рекурсию и другие основы.
источник
Я вижу Python как хороший выбор. Обычно для программирования «начального» уровня вам нужно что-то простое, но продуктивное. Получение быстрых отзывов поддерживает как мотивацию, так и скорость обучения. Смею сказать, что дело не в том, чтобы научиться «правильному пути», а в том, чтобы «зацепиться и влюбиться в программирование на всю жизнь». Остальные придут позже, через опыт, среднее образование, что угодно.
источник
ИМХО, учить людей программированию на «безопасных» языках - очень плохая идея. Люди предполагают, что все легко, и думают только о добавлении слоев и слоев кода. И потерять возможность отлаживать / исправлять проблемы, когда они возникают.
Хорошие программисты обязательно должны знать C / C ++ или даже ассемблер. И их мышление должно исходить и с этой стороны. А не - «О, GC, это делает Magic (тм), мы крутые, и почему C ++ не имеет GC, это глупо». отношение.
источник
Для начинающего программиста отсутствие статических типов - это особенность, а не ошибка!
При обучении программированию даже самые очевидные вещи могут быть трудны для понимания. Системы динамического типа очень просты и выходят за рамки более насущных тем вводного курса, таких как модульность, поток управления и т. Д.
Есть также некоторые концептуальные преимущества для динамического набора текста в образовательной среде:
Типы связаны со значениями, а не переменными. Это, возможно, более интуитивно понятно, поскольку отражает причину сбоя программ.
Сообщения об ошибках гораздо более непосредственные и конкретные. В Python вы получаете отличную трассировку стека и сообщение о том, что на самом деле пошло не так. В статически типизированном языке вы получаете предупреждение компилятора о том, что может пойти не так.
Учащиеся, работающие с компилятором, могут работать только с программами, которые они полностью понимают, чтобы не столкнуться с ошибкой компиляции, которую они не могут решить.
Проверка ошибок во время выполнения позволяет запускать неполные программы. Это позволяет создавать более инкрементные программы, в которых ученик сначала может беспокоиться о том, чтобы правильно начать программу, и только потом видит, что происходит.
Некоторые важные понятия, такие как параметрический полиморфизм и типизирование утки, предоставляются бесплатно на динамическом языке, но требуют более сложных систем типов на статическом языке.
Наконец, хотя вам все еще приходится справляться с той же сложностью, вы не получаете всех преимуществ статической типизации при запуске программы:
Программы для начинающих невелики и не имеют много путей к коду (поэтому вам не нужно сильно беспокоиться об ошибках типов в редко используемых фрагментах кода)
Программы для начинающих не используют высокоуровневые интерфейсы и функции, поэтому в отделе «использовать систему типов для разработки программы» также мало что можно выиграть.
источник
Для начинающих программистов в Python есть одна очень, очень , очень важная вещь, которую все, кажется, упустили из виду: форсирование правильного отступа.
Как и некоторые другие комментаторы, я учил начинающих в течение нескольких лет. Было очень странно видеть такие вещи:
Теперь представьте себе это ужасное несоответствие более ста строк кода. Для некоторых студентов все их проекты выглядели так.
Я понятия не имею, как им это удалось, и это никогда не беспокоило их. Каждый раз, когда я спрашивал, их ответ был что-то вроде: «Ну, это не имеет значения, потому что компилятор поймет это». Даже когда я показываю им очевидную ошибку, исправляя отступы, они все еще не получили подсказку.
В Python этот тип отступа просто недопустим. Они вынуждены использовать что-то, что по крайней мере читабельно, даже если это немного противоречиво. Это дает им привычку, которая, будем надеяться, продолжится, когда они в конечном итоге выучат какой-то другой язык.
источник
Python - отличный первый язык по большинству причин, указанных выше. В частности, одно требование к первому языку - это легкая кривая обучения, которую имеет Python. Вам не нужно знать все о классах, например, чтобы начать. В этом отношении это немного похоже на Базовый, который многие из нас начали.
Одна вещь, которая еще не была подчеркнута, состоит в том, что у многих языков есть легкая кривая изучения, но они быстро сталкиваются с кирпичной стеной, пытаясь сделать более продвинутые вещи. Старая школа Basic является хорошим примером этого. С Python вы можете углубиться в некоторые очень сложные вещи, прежде чем почувствовать, что какой-то другой язык может быть лучшим выбором.
К тому времени новичок сможет лучше понимать варианты и компромиссы и готов к C / C ++, Java, Assembler, Prolog, Lisp и т. Д. На самом деле, Lisp может быть хорошим первым языком, хотя и довольно строгим !
источник
Ключевая проблема с Python в качестве первого языка - это динамическая типизация и отсутствие объявления переменных. ИМХО они единственная серьезная проблема с языком.
Простое добавление строки, гласящей, что я собираюсь сохранить строку только в переменной foo, позволяет программисту, среде разработки, языку (а для «профессионального кода» - бедному дураку, который должен прийти в себя и поддержать его впоследствии) работать вместе. Для обычных разработчиков и начинающих особенно не имеет смысла использовать переменную для более чем одного типа. Это вполне нормально в тех редких случаях, когда имеет смысл использовать явный тип var / object, который допускает динамическую типизацию.
источник