Нещодавно я закінчив створення курсу Python 2 – Курс Молодого Бійця. З цієї нагоди вирішив присвятити даний пост в серії Програміст Початківець саме цій мові і розповісти чому я вважаю, що вона є однією з найкращих для початківців.

Languages

@vitalflux.com

Так, заголовок статті швидше спекулятивний. Адже кожна жаба хвалить своє болото 🙂 Питання такого типу зазвичай блокуються на stackoverflow. І для кожної задачі є свій інструмент. Але в даному пості я в першу чергу розглядаю плюси і мінуси мов програмування саме з точки зору людини, яка починає освоювати програмування, і яка ще не володіє жодною мовою.

В будь-якому випадку готовий до критичних коментів та цікавих дискусій…

Отже:

Переваги та недоліки Python

Знову ж таки. Розглядаємо переваги та недоліки з точки зору навчального процесу, а не для вирішення конкретних реальних проблем.

Переваги

  • Читабельність. Читається майже як нативна англійська мова. Коли я вперше побачив код на мові Python, велика частина його була зрозуміла просто з імен ключових слів та структури програми. Так, відступи там обов’язкові (це вже може трактуватися як плюсом так і мінусом). Простота та прямота коду, легко зрозуміти що звідки береться.
  • Інтерпретована та з динамічною типізацією. Тобто менше коду для визначення змінних. Це дозволяє студентові зосередитись на логіці програми, розв’язуванні задачі, а не так на нюансах мови та нутрощах комп’ютера (пам’яті, процесів, і т.д).
  • Написання програми ‘Hello world’ – одне з найшвидших, якщо порівнювати з іншими мовами. І взагалі швидкість розробки на мові Python одна з найвищих серед мов програмування!
  • Прості, короткі імпорти та велика база бібліотек та вбудованих інструментів. Що в кінцевому результаті дозволяє студентові досить швидко розв’язувати поставлені реальні задачі з мінімальними затратами та власним кодом.
  • Інтерактивний інтерпретатор дозволяє надзвичайно швидко проводити експерименти та вивчати новий матеріал.
  • Високорівневість мови абстрагує студента від деталей та низькорівневих концепцій програмування, яке зазвичай тормозить процес навчання на початках.
  • Навіть діти починають з мови Python 😉  http://codeclubua.org
  • Python дає можливість вивчати програмування на прикладі написання веб ресурсів, десктоп алпікацій, та навіть (використовуючи додаткові фреймворки) мобільних додатків. Тобто це мова широкого призначення.

Недоліки

  • на стільки легко почати кодити, що програміст часто забуває продумати деталі та правильний дизайн програми 😉
  • ООП в мові Python не на 100% відповідає усім започаткованим принципам
  • високорівневість мови змушує пізніше студента розбиратися з нюансами програмування, роботою з пам’яттю, процесами та іншими низькорівними концепціями
  • не така популярна поки, що як Java чи PHP 

Python та інші мови програмування

Тепер коротенько про переваги та недоліки Python при навчанні у порівнянні з іншими мовами програмування. Одразу скажу, я не спеціаліст у всіх нижче перечислених мовах. Ваші коментарі будуть дуже корисним, щоб краще докопатися до суті!

Python vs Ruby vs Php

@www.techi.com

Java

Java – це, можна сказати, баланс між хард кором таким, як компільовані мови (C, C++), та високорівневими інтерпретованими (та скриптованими) мовами як Python, PHP, Ruby.

Звідси і основний недолік для початківця у порівнянні з мовою Python: перші кроки значно важчі. Напівстатичні типи даних, багатослівний синтаксис (навіть імпорти), одразу потреба зануритися в деякі низькорівневі концепції програмування, все це призводить до сповільнення навчального процесу на самих початках.

Проте Java має кілька дуже хороших сторін:

  • після неї не страшно братися за більш високорівневі мови звичайно
  • вона більш поширена ніж Python, Ruby; великі ентерпрайзи використовують її скрізь і всюди
  • мова йде з наперед визначеними фреймворками та середовищами розробки для виконання конкретних задач, як от розробка вебсайту. Тобто початківцю не потрібно визначатись із інструментами, все для нього вже придумано і розкладено на поличках.
  • хороше ООП
  • знаючи Java, ви автоматично стаєте веб, десктоп та мобільним програмістом 😉

PHP

Сильні сторони:

  • у світі вебу ця мова однозначно популярніша за Python
  • також дуже легко почати з першою програмою, простота синтаксису та лояльний інтерпретатор дозволить швидко почати кодити.
  • завдяки поширеності знайти наставника, людину що допоможе при навчанні, досить просто

Недоліки:

  • багато різних варіантів зробити ту ж саму річ
  • усі функції в одному просторі імен, що робить запам’ятовування API дуже важким і заплутує
  • відсутність повноцінних імпортів, є інклуди
  • на початках дуже легко навчитись поганих практик програмування через простоту використання даної мови, навіть напряму міксуючи його з HTML кодом на веб сторінках
  • неповноцінне ООП
  • заточена під веб

Не рекомендую починати з PHP, якщо ви не будете серед команди PHP професіоналів, які зможуть вас скерувати у правильному напрямку та, із самого початку, допомогти вам освоїти лише правильні підходи та концепції програмування.

Ruby

Взагалі самі ідеологи стверджують, що дана високорівнева інтерпретована мова ідеально підходить для людини, що вже знає хоча б одну мову. Звідси і висновок – не оптимальний вибір для початкцівця.

З власного невеликого досвіду початківця можу сказати, що синтаксис та конструкції мови досить часто не явні, буває важко зрозуміти що звідки береться. Є можливість одну річ зробити багатьма різними способами. Це є класною штукою для спєца, адже вона дозволяє швидко писати код, проте початківцю це лише нашкодить.

Та й взагалі, поки Ruby не така поширена як Python (з цього місця рубісти мене зненавидять), а тим більше як PHP чи Java.

C/C++

Щодо компільованих мов, таких як C, C++, я уже згадував в одному із попередніх постів, що для початківця – це нерекомендований шлях. Адже мови прорамування цього класу вимагатимуть від вас освоєння великої кількості низькорівневих концепцій програмування та й комп’ютера загалом. Швидкість освоєння мови та й програмування загалом буде дуже низькою у порівнянні з інтерпретованими мовами, а то й і взагалі завадить вам довести справу до кінця.

Тому, якщо ви все ж таки хочете одразу розбиратися з низькими матеріями та закладати сильний фундамент у своє програмістське майбутнє, раджу все ж таки розглянути мову Java як першу.

Javascript

Першочергово відома як мова вебу, мова в бравзері, яка просто робила сторінки динамічними. Тепер же ж ця мова також промігрувала і на сервер. Зокрема завдяки популярному зараз серверному фреймворку node.js.

Мова не підтримує ООП в класичному вигляді, а через специфічний підхід прототипів. Вона також більше годиться уже для людей, які володіють однією з мов програмування. Та й не особливо я чув про набір фронт-енд спеціалістів джуніків, переважно хочуть вже спєців.

Тому починати з даної мови також не рекомендую.

Резюме

Загалом, на даний момент справжніми конкурентами для програміста початківця, на мою думку, є дві мови Python та Java. Яку з них обрати? Вже питання до вас. Я звичайно пораджу Python (адже ця мова моя улюблена ;-). Проте, вибір має бути під ваш характер: бажаєте якомога швидше і легше отримати перші результати? – Python. Бажаєте одразу краще зрозуміти програмування і його сутність як таку, і вважаєте, що посидючі та зможете попрацювати більше до перших результатів? – тоді Java.

І пам’ятайте, далі у своїй кар’єрі ви ще освоїте не одну мову. Тому ваш перший вибір – не на все життя, а лише для збільшення шансів успішного освоєння професії програміста!

The Zen of Python

Ну і на кінець – філософія мови Пітон мовою оригіналу 🙂

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!

Ну, а тепер чекаю на нищівні критичні коментарі 🙂 Думаю кожен програміст знайде не меншу кількість фактів, чому саме варта вивчати програмування починаючи з його улюбленої мови, а не Python.

Хочете першими дізнаватися про наступні статті у нашій серії “Програміст Початківець”? Тоді підписуйтесь на розсилку мого блогу: