Как стать автором
Обновить

Комментарии 9

Автор обзора, видимо, гордо считает себя лётчиком, раз постоянно употребляет «крайний» вместо «последний».

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

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

N.B. Хороший первый язык — предельно маленький, ортогональный, с предельно жёсткой статической типизацией. Из современных учебных языков — Oberon-07, из промышленных — Go.

Книга рассчитана на людей с пытливым умом и целеустременных, начинающих, что не имеют опыта программирования, но имеют пытливый ум и желание изучить Python.
но через четыре строчки:
Первое, на чем хотелось бы обратить ваше внимание — эта книга не для людей, что ранее не программировали. Она рассчитана на тех, кто имеет маломальский опыт программирования на любом из языков программирования и кто желает быстро освоить Python.
«Вы или крестик снимите, или трусы наденьте» © советский анекдот.

Автор старается дать не только абстрагированную от реального мира теорию, но и также связывает её с реальностью. давая практические примеры.
Теория — это те знания (прежде всего, свойства алгоритмов и дискретная математика), которые необходимы программисту для написания эффективного кода — знания, которые не зависят ни от языка программирования, ни круга решаемых задач. Но, как и любой другой учебник языка программирования, данная книга никакой теории, необходимой для изучения программирования, не содержит. Умение же писать код на конкретном языке программирования является прикладной дисциплиной и никакой теории не содержит — как не содержит теории умение пользоваться русским алфавитом.

"как и любой другой язык с динамической типизацией — провоцирует писать говнокод"

type hinting?

Если бы это был реальный контроль типов (хотя бы так, как это сделано в PHP), он бы имел смысл. Но в Python это лишь благое пожелание, не имеющее никакого значения. Например, данный код выполнится и напечатает 5.2:
def f(a: str, b: int) -> bool: return a + b
print (f(1.5, 3.7))

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

Понятно, что языки со статической типизацией — не панацея. Но они на этапе компиляции выявляют те ошибки, которые язык с динамической типизацией не может заметить. Возможностей налажать в языках со строгой статической типизацией многократно меньше. И чем жёстче компилятор относится к сомнительным местам в коде, тем лучше для обучающегося.

N.B. И это одна из причин выбрать именно Go: он считает ошибками то, на что компиляторы других языков не обращают внимания.

"Но в Python это лишь благое пожелание, не имеющее никакого значения"

как и PEP8, однако :-D

PEP8 хорош для пет-проектов. А работая в компании, вы будете оформлять код не по PEP8, а по тому CodeStyle, который утверждён в этой компании.

И вы смешиваете тёплое с мягким — ставя на одну доску правила оформления кода, никак не определяемые синтаксисом языка, и синтаксические конструкции самого языка, которые выглядят, как типизация, а на деле лишь вводят новичка в заблуждение.

Мне трудно объяснить вам, что такое PEP8 и type hinting.

Можете сходить на канал "Диджитализируй!" Алексея Голобурдина.

Там достаточно материала, чтобы понять, что Python и Go имеют совершенно разные ниши и не пересекаются.

Если учить людей для которых профессия — разрабатывать сложные приложения, используя разные инструменты, то конечно нужно уметь писать качественный код, учитывая тысячи разных вещей. Но ИМХО программировать уметь должны не только те, для кого это основная профессия. Например, физикам и бухгалтерам это тоже не помешает. Про бухгалтеров не скажу, а вот физикам Python очень полезен. При этом у хорошего физика просто времени нет изучать алгоритмы и структуры данных. С какой-нибудь условной энергией Ферми и фонон-фотонным взаимодействием разобраться бы…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории