Стратегии за усвояване на нови програмни езици

  1. Отварям тази тема, за да обменим опит в усвояването на нови програмни езици, и в частност Python.

    Моята скромна рецепта гласи:

    1. Опознаване на езика. Преди да започна този курс, единственият ми по-сериозен допир с Python беше четенето на произволни дискусии в StackOverflow, форуми, блогове и пощенски списъци, обсъждащи как разни елементарни операции с вградени конструкции да се направят „най-питонски“ (напр. обхождане и сливане на списъци или превръщане на речник в списък). Дори без водене на записки, забелязах, че нещата малко или много се повтарят, наподобяват си и започват да ми се набиват в главата.
    2. Документацията на Python е страхотна! Лично аз първо ползвам интерактивната конзола при всякакви въпроси – пробване или просто четене на резултата от help().
    3. Четене на код. Може би някои любими настолни, Интернет или мобилни приложения са писани на този език и са с отворен код? От такива проекти в началото обикновено нищо не се разбира, но поне се вижда дали кодът е „красиво подреден“ (каквото и да значи това за всекиго), както и активността на обществото от разработчици, ползващи този език.
    4. Писане на код. Може и на други езици, от други семейства и с други парадигми. Помага! Работеща, но „непитонски“ написана програма е по-добре от „питонски“ написана, но неработеща такава. Особено когато човек е съвсем гол и бос в езика, най-вероятно не му/ѝ се занимава освен всичко останало и с отстраняването на програмни грешки. С вече познатите ресурси от първата точка, кодът винаги ще се поддаде на „питонизиране“. Разбира се, това би трябвало да важи в пълна сила и за други целеви езици. :)
    5. От питане глава не боли. Хората с повече опит могат да спестят много време в търсене и да съдействат при изясняването същината на проблема.

    Ще се радвам на всякакви допълнения и коментари по темата. Какъв е вашият „алгоритъм“ за овладяване на нови програмни езици?

  2. В такъв случай, моят алгоритъм евристика е следната:

    1. Прочитам книга. Имам нужда от сбито, обмислено и структурирано представяне на езика.
    2. Започвам да пиша малки програмки, с които да проумея това-онова. Измислям си ги на момента.
    3. Започвам да следя блогове и mailing list-и, свързани с езика. Чета ги внимателно.
    4. Намирам си няколко проекта в GitHub, чиито код да разгледам и (евентуално) да поtweakвам.
    5. Започвам си някакво малко, "хоби" проектче.
    6. Евентуално, започвам да водя курс във ФМИ за езика.

    За мен основния "пиниз" в научаването на нов език е схващането как да пишем на него идиоматично, а не как да реша задачите в Project Euler с него. За мен например е много по-важен различния начин за използване на обекти в JavaScript и Python (например), отколкото популярните библиотеки. Можеш да забележиш, че списъка ми цели нещо точно такова.

    В този ред на мисли, винаги се уверявам, че съм научил целия синтаксис на езика, преди да започна да задълбавам. За мен няма нищо по-досадно от това да попадна на конструкция и да не мога да осмисля какво точно става.

  3. What the author of "Learn Python the Hard Way" recommends :

    • The Django Tutorial and try to build a web application with the Django Web Framework
    • SciPy if you're into science, math, and engineering and also `Dexy
    • PyGame and see if you can make a game with graphics and sound.
    • Pandas for doing data manipulation and analysis.
    • Natural Language Tool Kit for analyzing written text and writing things like spam filters and chat bots.
    • Requests to learn the client side of HTTP and the web.
    • SimpleCV to play with making your computer see things in the real world.
    • ScraPy and try scraping some web sites to get information off them.

Трябва да сте влезли в системата, за да може да отговаряте на теми.