Нещодавно я закінчив створення курсу Python 2 – Курс Молодого Бійця. З цієї нагоди вирішив присвятити даний пост в серії Програміст Початківець саме цій мові і розповісти чому я вважаю, що вона є однією з найкращих для початківців.
Так, заголовок статті швидше спекулятивний. Адже кожна жаба хвалить своє болото 🙂 Питання такого типу зазвичай блокуються на stackoverflow. І для кожної задачі є свій інструмент. Але в даному пості я в першу чергу розглядаю плюси і мінуси мов програмування саме з точки зору людини, яка починає освоювати програмування, і яка ще не володіє жодною мовою.
В будь-якому випадку готовий до критичних коментів та цікавих дискусій…
Отже:
Переваги та недоліки Python
Знову ж таки. Розглядаємо переваги та недоліки з точки зору навчального процесу, а не для вирішення конкретних реальних проблем.
Переваги
- Читабельність. Читається майже як нативна англійська мова. Коли я вперше побачив код на мові Python, велика частина його була зрозуміла просто з імен ключових слів та структури програми. Так, відступи там обов’язкові (це вже може трактуватися як плюсом так і мінусом). Простота та прямота коду, легко зрозуміти що звідки береться.
- Інтерпретована та з динамічною типізацією. Тобто менше коду для визначення змінних. Це дозволяє студентові зосередитись на логіці програми, розв’язуванні задачі, а не так на нюансах мови та нутрощах комп’ютера (пам’яті, процесів, і т.д).
- Написання програми ‘Hello world’ – одне з найшвидших, якщо порівнювати з іншими мовами. І взагалі швидкість розробки на мові Python одна з найвищих серед мов програмування!
- Прості, короткі імпорти та велика база бібліотек та вбудованих інструментів. Що в кінцевому результаті дозволяє студентові досить швидко розв’язувати поставлені реальні задачі з мінімальними затратами та власним кодом.
- Інтерактивний інтерпретатор дозволяє надзвичайно швидко проводити експерименти та вивчати новий матеріал.
- Високорівневість мови абстрагує студента від деталей та низькорівневих концепцій програмування, яке зазвичай тормозить процес навчання на початках.
- Навіть діти починають з мови Python 😉 http://codeclubua.org
- Python дає можливість вивчати програмування на прикладі написання веб ресурсів, десктоп алпікацій, та навіть (використовуючи додаткові фреймворки) мобільних додатків. Тобто це мова широкого призначення.
Недоліки
- на стільки легко почати кодити, що програміст часто забуває продумати деталі та правильний дизайн програми 😉
- ООП в мові Python не на 100% відповідає усім започаткованим принципам
- високорівневість мови змушує пізніше студента розбиратися з нюансами програмування, роботою з пам’яттю, процесами та іншими низькорівними концепціями
- не така популярна поки, що як Java чи PHP
Python та інші мови програмування
Тепер коротенько про переваги та недоліки Python при навчанні у порівнянні з іншими мовами програмування. Одразу скажу, я не спеціаліст у всіх нижче перечислених мовах. Ваші коментарі будуть дуже корисним, щоб краще докопатися до суті!
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.
Хочете першими дізнаватися про наступні статті у нашій серії “Програміст Початківець”? Тоді підписуйтесь на розсилку мого блогу:
Україномовний ресурс для програмістів. Респект! Не знаю хто ти і звідки, але ти крутий! Сам вчу програмування і твій ресурс супер!
Вітаю! Я ще застав ті часи коли дер… ЕОМ 🙂 . були великим 🙂 та вже почали з‘являтися персоналки. З того часу моя діяльність так чи інакше пов‘язана з ПК. Та мовами програмування /C, C++, Perl, Paskal-Delphi/ володію на дуже дилетантському рівні. Жодних вагомих здобутків. Колись на Perl зробив примітивний білінг для dialup-ерів (якщо ще хтось пам’ятає що це таке) -все решта – нічого не варті поробки… Та ось визріла ідея та виробнича необхідніст автоматизувати дещо. А web тепер модно 🙂 – як думаєте, з такими навичками чи варто взагалі пробувати?
C# ?!
The best one!
Прочитав статтю одного хакера – Як стати хакером. Він також радить почати з Пітона. Якщо профі кажуть почати з Пітона, значить треба почати з Пітона.
А де той час коли вибирали Algo? І як тоді програмували?
нажаль чи на щастя той час не застав 🙂 чув хіба розповіді від старших про перфокарти і компутери на цілі аудиторії ))
Весьма интересная и, я бы сказал, полезная статья для новичков =)
Я учусь на программиста уже 4-й год, и припоминаю, что у нас все начиналось с Pascal ) как все возмущались этому, но тем не менее, делали что положенно, и даже не у всех всё получалось. Как оказалось – и на этом языке можно делать много интересных вещей.
А вообще сам практикуюсь, в основном, в веб-программировании, начинал, само-собой, html/css, java уже изучаю неколько лет и до сих пор толком не знаю (почти сразу начал с фреймворков), node.js, jQuery – мои любимые фреймворки, до сих пор просто насладжаюсь моментом, когда кодю с их помощью. Было дело – руби учил, но как яп не понравился, так что знаю не много… Буду откровенен – Pyhton и в глаза не видел..)
У нас також був паскаль на мех-маті. Зовсім трохи. Можна на ньому дійсно багато чого вчудити 😉
мой выбор:
первое: python+html+css+javascript+курс+подмастерье
второе: работа в команде по 8-10 часов в день 🙂
третье: дополнительно с++/с# или java – потом определюсь.
пока приступил к первому 🙂
поки зробиш перше, третє вже може змінитись 😉
Дякую, цікава і корисна стаття, Так як я обирала першу мову раніше, то обрала С++,і вже зробила перші кроки у її вивченні), програмування загалом цікаве!, тому мені здається,потрібно обирати першу мову як основу для подальшого програмування , а не де простіше)
Дякую за коментар! Зважаючи не те, що більша частина людей таки не доходять до фінішу, а також на те, що далі по кар’єрі програміст зазвичай неодноразово освоює нову мову програмування, я все ж таки рекомендую початківцям почати з простішого, а далі вже експериментувати.
Так як в бізнесі, коли стартуєш – ніколи не знаєш як воно далі буде, то для чого початково обирати складніший шлях 😉