Як освоїти нову мову програмування за одну ніч? | KV.by

  1. Як освоїти нову мову програмування за одну ніч? Як деякі розробники освоюють нову мову програмування...
  2. Як освоїти нову мову програмування за одну ніч?

Як освоїти нову мову програмування за одну ніч?

Як деякі розробники освоюють нову мову програмування за одну ніч? Своїми порадами поділилися користувачі сайту Quora . Найцікавіші відповіді - в нашому матеріалі.

Боб Кернс, програміст і розробник мов програмування, стаж 45 років

Загалом, мови програмування не такі складні. Варто тільки освоїти кілька мов, зрозуміти загальну ідею і залишиться лише запам'ятовувати ключові слова і правила синтаксису. Набагато більше труднощів викликають складні інтерфейси програмування додатків (API).

Ще складнішими є середовища виконання мов. Це той набір API, який йде разом з мовою - візьміть, наприклад, Java. Список пакетів класів займає не одну сторінку. Я працюю з Java вже близько 20 років. І все ще залишаються частини бібліотеки робочих програм, з якими я не знайомий. Деякі з них нові, деякі старі, а я їх просто ні разу не використовував.

Екосистеми (доступні бібліотеки) навіть складніше. Ніхто повністю не знає екосистеми таких стійко функціонуючих мов, як Java або JavaScript. Вони ростуть і розвиваються швидше, ніж людина здатна відстежити.

Google і сарафанне радіо тут якраз до речі.

Дейв Беггет, співробітник №1 в Naughty Dog; співзасновник ITA Software

Кожен професійний програміст, в якому є хоч крапля здорового глузду, знає, як почати робити щось нове, використовуючи робочий приклад звідки-небудь (в наші дні, як правило, з Google). Починаючи з робочого прикладу, більшість програмістів в змозі створювати гідні модифікації і почати вчитися спілкуванню нової системи / нової мови. Подібне виразно можна зробити за один день і це саме те, що ви бачили і про що питаєте.

Однак мова тут йде не про майстерність. Для мене «освоєння мови» має на увазі певний рівень майстерності, а його досягнення навіть у кращих розробників займає тижні, місяці і навіть роки.

Освоєння деяких мов на високому рівні займає багато років. Хоча багато хто вважає себе експертами в С ++, я буду щиро здивований, якщо досконала перевірка 10000 таких експертів допоможе нам виявити більше одного професіонала, який насправді знає мову на рівні, необхідному для написання компілятора або правильної відповіді на спірне питання, що стосується синтаксису або семантики. Я кодую на С з 1979, а на С ++ з 1994 і я навіть близько не є експертом в С ++. Хоча я ніколи до цього і не прагнув.

Так що, кількість часу, необхідне для вивчення мови, в основному залежить від мови. Але в будь-якому випадку знадобиться більше, ніж одна ніч.

Але в будь-якому випадку знадобиться більше, ніж одна ніч

Амо Хьюігл, програміст

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

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

На наступний ранок я приступив до роботи над проектом. І хоча спочатку я зіткнувся з деякими проблемами, в інтернеті було достатньо корисної інформації для виправлення синтаксичних помилок. Протягом наступних 2-3 днів я продовжив роботу над проектом і опанував мову програмування, що дозволило мені без особливих труднощів впоратися з проектом. Моїм єдиним девізом стала фраза: «До кінця дня я повинен знати про цю мову більше, ніж я знав вчора».

Кілька важливих моментів, які допомогли мені у вивченні мови:

1) Проект. Оскільки існував проект, пов'язаний з мовою, я міг поступово освоювати мову.

2) Великі знання в області програмування. На той момент я вже добре володів іншими мовами програмування, що допомогло мені швидко «увібрати» важливі принципи нової мови.

3) Послідовність. Дуже важливо бути послідовним у навчанні. Краще вчитися по 2 години на день протягом тижня, ніж 14 годин за один раз.

Вім тен Брінк, більше 40 років самостійно розвиваю навички програмування

Я вивчаю нові мови на льоту, це не складно, якщо розуміти основи розробки.

Більшість мов включає в себе всього три елементи: затвердження, умови і цикли. Часто саме вони групуються в методах, функціях або операціях, які створюють з них «складових операторів». Принцип орієнтування на об'єкт складається в приєднанні складових операторів до запису даних, і ви отримуєте загальну структуру успадкування. Часто інтерфейси можуть застосовуватися до класів для того, щоб «трансформувати» різні класи в схожі. А решта за великим рахунком - тільки різниця в синтаксисі.

Досвідчений розробник може побіжно ознайомитися з мовою і помітити названі мною речі. Це не робить його експертом моментально, але багато хто зможе зробити деякі висновки щодо нового синтаксису і, тим самим, заощадити час на його вивчення. Можна сказати, що такі розробники більше не працюють з мовами. Вони працюють зі структурами. Не важливо, яку мову ви виберете, всі вони мають схожу структуру.

Ірен Бернард, програмую з 80-х років

Програмування важко зрозуміти, мови програмування, навпаки, легкі (зазвичай потрібно засвоїти лише деякі особливості). Як тільки програміст навчиться програмування, особливо всім необхідним азам парадигми програмування, для освоєння мови йому / їй залишиться лише звернути увагу на деякі моменти.

Різниця між мовами програмування, як правило, також незначна, як і відмінність інтерфейсу Microsoft Office Word від інтерфейсу LibreOffice Write. Обидва виконують одні й ту ж функції (форматують текст, його стилі, параграфи, заголовки, розділи, сторінки і т.д., включаючи таблиці / списки / зображення / і т.д., додамо сюди перевірку правопису, підрахунок слів, автоматичне налаштування полів, створення змісту і т.д.), використовуючи схожі методи. Користувач просто натискає на інші кнопки, розташовані в інших місцях.

Теж саме і з мовами, речі називаються по-різному, пунктуація різна, «граматика» може відрізнятися - але до тих пір, поки обидві мови працюють на основі однієї парадигми програмування, на цьому відмінності і закінчуються. Якщо вони працюють на різних парадигмах (напр., Процедурне НЕ об'єктно-орієнтоване проти об'єктно-орієнтованого, або імперативне проти декларативного і т.д.), тоді це буде швидше походити на порівняння Word і Exel ... вони виконують різні функції по-різному ( навіть незважаючи на те, що один міг би досягти тієї ж мети, однак будуть використані нові шляхи).

Коли мови працюють на основі різних парадигм, стає важкувато. Наприклад: перехід від С до С ++ здається нескладним, але для того, щоб в повній мірі вивчити С ++, програмісту необхідно зрозуміти об'єктне орієнтування, з яким він (а) ніколи не скидав (а) ся в С. Саме ЦЕ займе багато часу, особливо тому, що в іншому С ++ дуже схожий на С (навіть пунктуація і граматика залишаються незмінними). Але припустимо, хтось переходить з Python на Ruby ... Мови дуже схожі, невелика різниця в граматиці, деякі відмінності в пунктуації - мене тягне сказати, що програмісту, «добре» володіє Python, має бути нескладно вивчити Ruby за 1-2 дня.

Ще одне. Що ви маєте на увазі під «освоєнням» мови? Наприклад: досвідчений програміст, який володіє С ++, може легко вивчити Python за один день. Але наскільки добре він / вона буде знати Python? Що щодо створення списків синтаксичними методами, а не використовуючи цикли?

Подібні речі зазвичай передують нові моделі, з якими програміст міг до цього не стикатися, але в той же час їх зовсім не обов'язково знати, щоб використовувати мову. Чи є знання таких моментів обов'язковою умовою для того, щоб заявити, що ви оволоділи Python? Зазвичай це називають «вільним володінням» <вписати мову тут>. Знайомство з тонкощами може зайняти більше одного дня, але навіть в такому випадку, як тільки ви вивчите їх в одній мові, ви виявите щось схоже і в інших.

Знайомство з тонкощами може зайняти більше одного дня, але навіть в такому випадку, як тільки ви вивчите їх в одній мові, ви виявите щось схоже і в інших

Скотт Гартнер, програмую протягом 33 років

Відповідь дуже простий: це неможливо. Можна вивчити синтаксис мови програмування, (особливо якщо це мова на зразок LIST, в якому мінімальна кількість синтаксичних правил).

Однак процес освоєння мови - це все-таки саме процес, а не одноразова дія. Програмую на C # вже протягом 12 років і до сих пір продовжую вчити цю мову. Я працюю з PHP близько 9 років, з Java - близько 8, і я можу далі продовжити цей список. Я вільно володію всіма цими, а також багатьма іншими мовами, але суть полягає в тому, що процес вивчення нового не припиняється ніколи. Якби я захотів повернутися до мови Java, мені б довелося витратити достатню кількість часу, щоб освіжити в пам'яті багато моментів. Я більше не працюю з цією мовою, але я все одно продовжую читати новини, що стосуються його.

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

Джіакомо Сорби, програміст-самоучка, захоплений програмуванням досить, щоб стати настільки хорошим програмістом, наскільки знадобиться

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

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

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

Стів Кук, беру участь на різних рівнях розробки програмного забезпечення на протязі 20 років

Перш за все варто визначити самі поняття «вивчити» і «нову мову»

Часто мені доводиться оцінювати нові технології, включаючи нові мови, об'єктні структури і багато іншого. У мене викликають посмішку компанії, які вважають, що на вивчення нової об'єктної структури мені необхідно півроку, коли на ділі цей процес займе у мене не більше пари днів.

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

«Вивчення мови» можна розуміти по-різному. Я не можу повністю оволодіти мовою за один день, завжди залишатимуться невідомі мені дрібниці, але при цьому після закінчення цього часу я зможу почати кодувати на ньому.

Під вивченням мови я маю на увазі вивчення його структури, синтаксису і основних понять, а не вивчення кожного окремого випадку.

Ключові питання, на які варто звернути увагу:

  • Загальна структура і точки входу
  • Базові структури даних і області застосування. Освоюються за допомогою ретельного опрацювання пари прикладів (категорії, область застосування, використання інтерфейсів)
  • Загальна логіка і управління потоком даних. Рідко вимагає великої кількості часу. По більшій мірі стає очевидним з раніше вивчених мов.
  • Управління потоком і пам'яттю. Йдеться про такі речі, як виклик функції, концепти синхронізації і т.д. Основні відомості зазвичай сприймаються досить легко, хоча складності можуть викликати деякі пункти, такі як, наприклад, детальне управління потоком і пам'яттю, в залежності від ступеня необхідної складності.

Будь-який програміст, у якого є хоч крапля мізків, усвідомлює, що незалежно від того, працюєш ти з цією мовою один день або 10 років, завжди може виникнути ситуація, в якій можуть допомогти тільки зовнішні джерела, Google, наприклад.

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

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

З цієї причини я б порадив витратити час на вивчення, а може навіть і на оволодіння Assembler, С, С ++, а також на Java і C #. Це дасть вам чіткі теоретичні знання, а також розуміння базового рівня. Як тільки ви освоїте їх, варто переходити до вивчення мов, заснованих не так на мові С. Це буде напевно непростим завданням, так як доведеться в деякій мірі змінити хід мислення, але такими мовами, як python або lisp, дійсно варто опанувати.

Це буде напевно непростим завданням, так як доведеться в деякій мірі змінити хід мислення, але такими мовами, як python або lisp, дійсно варто опанувати

Марк Бадіола, INFJ, програміст, блогер, ілюстратор

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

Я працюю в компанії, в якій програмісти не ідентифікують себе як Java-розробник, С або C # -разработчик і т.д. Звичайно, у нас є улюблені мови програмування, але при цьому ми отримуємо задоволення, працюючи з іншими мовами, в тому випадку, якщо ці мови краще задовольнять потреби клієнтів. Тому нам дійсно властиво намагатися за одну ніч вивчити нову мову / оболонку, щоб розробити дієву стратегію, яким чином інтегрувати нашу роботу з вже існуючою системою, або ж мати міцне обгрунтування, пропонуючи ціну за проект.

Я вважаю за краще слідувати трьом простим рекомендаціям:

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

2. Створіть приклад програми, яка зачіпає принаймні ази того, що вам хочеться або необхідно знати. Для інформаційних систем непоганим початком може стати додаток для управління відомостями про співробітників або щось подібне. Таке додаток зачіпає синтаксис, структури даних, а також взаємодіє з базами даних. Ви навіть можете створити логін для забезпечення безпеки. Хоча, деякі використовують для цього готові структури. У мене є знайомий розробник ігор, який завжди починав з понгу, так як саме це стосувалося анімації, спірних моментів, фізичних явищ та інших важливих аспектів в програмуванні ігор.

3. Використовуйте інтернет. Пункт номер 2 підкаже вам напрямок. З його допомогою ви дізнаєтеся, що вам необхідно шукати. Замість запиту «навчальна програма для мови Х», пошук можна почати з чогось більш конкретного, наприклад «визначення класів в мові Х». Особисто я не можу сприймати і запам'ятовувати інформацію, яка не потрібна мені прямо зараз. Наприклад, навіщо вивчати всі типи циклів, якщо в цьому додатку все вони мені не знадобляться? Я буду шукати інформацію про них тільки тоді, коли вони мені будуть потрібні.

Само собою зрозуміло, що я веду мову про мій стиль навчання. Інші люди вчаться скоєно по-іншому.

Як освоїти нову мову програмування за одну ніч?

Як деякі розробники освоюють нову мову програмування за одну ніч? Своїми порадами поділилися користувачі сайту Quora . Найцікавіші відповіді - в нашому матеріалі.

Боб Кернс, програміст і розробник мов програмування, стаж 45 років

Загалом, мови програмування не такі складні. Варто тільки освоїти кілька мов, зрозуміти загальну ідею і залишиться лише запам'ятовувати ключові слова і правила синтаксису. Набагато більше труднощів викликають складні інтерфейси програмування додатків (API).

Ще складнішими є середовища виконання мов. Це той набір API, який йде разом з мовою - візьміть, наприклад, Java. Список пакетів класів займає не одну сторінку. Я працюю з Java вже близько 20 років. І все ще залишаються частини бібліотеки робочих програм, з якими я не знайомий. Деякі з них нові, деякі старі, а я їх просто ні разу не використовував.

Екосистеми (доступні бібліотеки) навіть складніше. Ніхто повністю не знає екосистеми таких стійко функціонуючих мов, як Java або JavaScript. Вони ростуть і розвиваються швидше, ніж людина здатна відстежити.

Google і сарафанне радіо тут якраз до речі.

Дейв Беггет, співробітник №1 в Naughty Dog; співзасновник ITA Software

Кожен професійний програміст, в якому є хоч крапля здорового глузду, знає, як почати робити щось нове, використовуючи робочий приклад звідки-небудь (в наші дні, як правило, з Google). Починаючи з робочого прикладу, більшість програмістів в змозі створювати гідні модифікації і почати вчитися спілкуванню нової системи / нової мови. Подібне виразно можна зробити за один день і це саме те, що ви бачили і про що питаєте.

Однак мова тут йде не про майстерність. Для мене «освоєння мови» має на увазі певний рівень майстерності, а його досягнення навіть у кращих розробників займає тижні, місяці і навіть роки.

Освоєння деяких мов на високому рівні займає багато років. Хоча багато хто вважає себе експертами в С ++, я буду щиро здивований, якщо досконала перевірка 10000 таких експертів допоможе нам виявити більше одного професіонала, який насправді знає мову на рівні, необхідному для написання компілятора або правильної відповіді на спірне питання, що стосується синтаксису або семантики. Я кодую на С з 1979, а на С ++ з 1994 і я навіть близько не є експертом в С ++. Хоча я ніколи до цього і не прагнув.

Так що, кількість часу, необхідне для вивчення мови, в основному залежить від мови. Але в будь-якому випадку знадобиться більше, ніж одна ніч.

Але в будь-якому випадку знадобиться більше, ніж одна ніч

Амо Хьюігл, програміст

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

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

На наступний ранок я приступив до роботи над проектом. І хоча спочатку я зіткнувся з деякими проблемами, в інтернеті було достатньо корисної інформації для виправлення синтаксичних помилок. Протягом наступних 2-3 днів я продовжив роботу над проектом і опанував мову програмування, що дозволило мені без особливих труднощів впоратися з проектом. Моїм єдиним девізом стала фраза: «До кінця дня я повинен знати про цю мову більше, ніж я знав вчора».

Кілька важливих моментів, які допомогли мені у вивченні мови:

1) Проект. Оскільки існував проект, пов'язаний з мовою, я міг поступово освоювати мову.

2) Великі знання в області програмування. На той момент я вже добре володів іншими мовами програмування, що допомогло мені швидко «увібрати» важливі принципи нової мови.

3) Послідовність. Дуже важливо бути послідовним у навчанні. Краще вчитися по 2 години на день протягом тижня, ніж 14 годин за один раз.

Вім тен Брінк, більше 40 років самостійно розвиваю навички програмування

Я вивчаю нові мови на льоту, це не складно, якщо розуміти основи розробки.

Більшість мов включає в себе всього три елементи: затвердження, умови і цикли. Часто саме вони групуються в методах, функціях або операціях, які створюють з них «складових операторів». Принцип орієнтування на об'єкт складається в приєднанні складових операторів до запису даних, і ви отримуєте загальну структуру успадкування. Часто інтерфейси можуть застосовуватися до класів для того, щоб «трансформувати» різні класи в схожі. А решта за великим рахунком - тільки різниця в синтаксисі.

Досвідчений розробник може побіжно ознайомитися з мовою і помітити названі мною речі. Це не робить його експертом моментально, але багато хто зможе зробити деякі висновки щодо нового синтаксису і, тим самим, заощадити час на його вивчення. Можна сказати, що такі розробники більше не працюють з мовами. Вони працюють зі структурами. Не важливо, яку мову ви виберете, всі вони мають схожу структуру.

Ірен Бернард, програмую з 80-х років

Програмування важко зрозуміти, мови програмування, навпаки, легкі (зазвичай потрібно засвоїти лише деякі особливості). Як тільки програміст навчиться програмування, особливо всім необхідним азам парадигми програмування, для освоєння мови йому / їй залишиться лише звернути увагу на деякі моменти.

Різниця між мовами програмування, як правило, також незначна, як і відмінність інтерфейсу Microsoft Office Word від інтерфейсу LibreOffice Write. Обидва виконують одні й ту ж функції (форматують текст, його стилі, параграфи, заголовки, розділи, сторінки і т.д., включаючи таблиці / списки / зображення / і т.д., додамо сюди перевірку правопису, підрахунок слів, автоматичне налаштування полів, створення змісту і т.д.), використовуючи схожі методи. Користувач просто натискає на інші кнопки, розташовані в інших місцях.

Теж саме і з мовами, речі називаються по-різному, пунктуація різна, «граматика» може відрізнятися - але до тих пір, поки обидві мови працюють на основі однієї парадигми програмування, на цьому відмінності і закінчуються. Якщо вони працюють на різних парадигмах (напр., Процедурне НЕ об'єктно-орієнтоване проти об'єктно-орієнтованого, або імперативне проти декларативного і т.д.), тоді це буде швидше походити на порівняння Word і Exel ... вони виконують різні функції по-різному ( навіть незважаючи на те, що один міг би досягти тієї ж мети, однак будуть використані нові шляхи).

Коли мови працюють на основі різних парадигм, стає важкувато. Наприклад: перехід від С до С ++ здається нескладним, але для того, щоб в повній мірі вивчити С ++, програмісту необхідно зрозуміти об'єктне орієнтування, з яким він (а) ніколи не скидав (а) ся в С. Саме ЦЕ займе багато часу, особливо тому, що в іншому С ++ дуже схожий на С (навіть пунктуація і граматика залишаються незмінними). Але припустимо, хтось переходить з Python на Ruby ... Мови дуже схожі, невелика різниця в граматиці, деякі відмінності в пунктуації - мене тягне сказати, що програмісту, «добре» володіє Python, має бути нескладно вивчити Ruby за 1-2 дня.

Ще одне. Що ви маєте на увазі під «освоєнням» мови? Наприклад: досвідчений програміст, який володіє С ++, може легко вивчити Python за один день. Але наскільки добре він / вона буде знати Python? Що щодо створення списків синтаксичними методами, а не використовуючи цикли?

Подібні речі зазвичай передують нові моделі, з якими програміст міг до цього не стикатися, але в той же час їх зовсім не обов'язково знати, щоб використовувати мову. Чи є знання таких моментів обов'язковою умовою для того, щоб заявити, що ви оволоділи Python? Зазвичай це називають «вільним володінням» <вписати мову тут>. Знайомство з тонкощами може зайняти більше одного дня, але навіть в такому випадку, як тільки ви вивчите їх в одній мові, ви виявите щось схоже і в інших.

Знайомство з тонкощами може зайняти більше одного дня, але навіть в такому випадку, як тільки ви вивчите їх в одній мові, ви виявите щось схоже і в інших

Скотт Гартнер, програмую протягом 33 років

Відповідь дуже простий: це неможливо. Можна вивчити синтаксис мови програмування, (особливо якщо це мова на зразок LIST, в якому мінімальна кількість синтаксичних правил).

Однак процес освоєння мови - це все-таки саме процес, а не одноразова дія. Програмую на C # вже протягом 12 років і до сих пір продовжую вчити цю мову. Я працюю з PHP близько 9 років, з Java - близько 8, і я можу далі продовжити цей список. Я вільно володію всіма цими, а також багатьма іншими мовами, але суть полягає в тому, що процес вивчення нового не припиняється ніколи. Якби я захотів повернутися до мови Java, мені б довелося витратити достатню кількість часу, щоб освіжити в пам'яті багато моментів. Я більше не працюю з цією мовою, але я все одно продовжую читати новини, що стосуються його.

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

Джіакомо Сорби, програміст-самоучка, захоплений програмуванням досить, щоб стати настільки хорошим програмістом, наскільки знадобиться

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

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

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

Стів Кук, беру участь на різних рівнях розробки програмного забезпечення на протязі 20 років

Перш за все варто визначити самі поняття «вивчити» і «нову мову»

Часто мені доводиться оцінювати нові технології, включаючи нові мови, об'єктні структури і багато іншого. У мене викликають посмішку компанії, які вважають, що на вивчення нової об'єктної структури мені необхідно півроку, коли на ділі цей процес займе у мене не більше пари днів.

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

«Вивчення мови» можна розуміти по-різному. Я не можу повністю оволодіти мовою за один день, завжди залишатимуться невідомі мені дрібниці, але при цьому після закінчення цього часу я зможу почати кодувати на ньому.

Під вивченням мови я маю на увазі вивчення його структури, синтаксису і основних понять, а не вивчення кожного окремого випадку.

Ключові питання, на які варто звернути увагу:

  • Загальна структура і точки входу
  • Базові структури даних і області застосування. Освоюються за допомогою ретельного опрацювання пари прикладів (категорії, область застосування, використання інтерфейсів)
  • Загальна логіка і управління потоком даних. Рідко вимагає великої кількості часу. По більшій мірі стає очевидним з раніше вивчених мов.
  • Управління потоком і пам'яттю. Йдеться про такі речі, як виклик функції, концепти синхронізації і т.д. Основні відомості зазвичай сприймаються досить легко, хоча складності можуть викликати деякі пункти, такі як, наприклад, детальне управління потоком і пам'яттю, в залежності від ступеня необхідної складності.

Будь-який програміст, у якого є хоч крапля мізків, усвідомлює, що незалежно від того, працюєш ти з цією мовою один день або 10 років, завжди може виникнути ситуація, в якій можуть допомогти тільки зовнішні джерела, Google, наприклад.

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

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

З цієї причини я б порадив витратити час на вивчення, а може навіть і на оволодіння Assembler, С, С ++, а також на Java і C #. Це дасть вам чіткі теоретичні знання, а також розуміння базового рівня. Як тільки ви освоїте їх, варто переходити до вивчення мов, заснованих не так на мові С. Це буде напевно непростим завданням, так як доведеться в деякій мірі змінити хід мислення, але такими мовами, як python або lisp, дійсно варто опанувати.

Це буде напевно непростим завданням, так як доведеться в деякій мірі змінити хід мислення, але такими мовами, як python або lisp, дійсно варто опанувати

Марк Бадіола, INFJ, програміст, блогер, ілюстратор

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

Я працюю в компанії, в якій програмісти не ідентифікують себе як Java-розробник, С або C # -разработчик і т.д. Звичайно, у нас є улюблені мови програмування, але при цьому ми отримуємо задоволення, працюючи з іншими мовами, в тому випадку, якщо ці мови краще задовольнять потреби клієнтів. Тому нам дійсно властиво намагатися за одну ніч вивчити нову мову / оболонку, щоб розробити дієву стратегію, яким чином інтегрувати нашу роботу з вже існуючою системою, або ж мати міцне обгрунтування, пропонуючи ціну за проект.

Я вважаю за краще слідувати трьом простим рекомендаціям:

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

2. Створіть приклад програми, яка зачіпає принаймні ази того, що вам хочеться або необхідно знати. Для інформаційних систем непоганим початком може стати додаток для управління відомостями про співробітників або щось подібне. Таке додаток зачіпає синтаксис, структури даних, а також взаємодіє з базами даних. Ви навіть можете створити логін для забезпечення безпеки. Хоча, деякі використовують для цього готові структури. У мене є знайомий розробник ігор, який завжди починав з понгу, так як саме це стосувалося анімації, спірних моментів, фізичних явищ та інших важливих аспектів в програмуванні ігор.

3. Використовуйте інтернет. Пункт номер 2 підкаже вам напрямок. З його допомогою ви дізнаєтеся, що вам необхідно шукати. Замість запиту «навчальна програма для мови Х», пошук можна почати з чогось більш конкретного, наприклад «визначення класів в мові Х». Особисто я не можу сприймати і запам'ятовувати інформацію, яка не потрібна мені прямо зараз. Наприклад, навіщо вивчати всі типи циклів, якщо в цьому додатку все вони мені не знадобляться? Я буду шукати інформацію про них тільки тоді, коли вони мені будуть потрібні.

Само собою зрозуміло, що я веду мову про мій стиль навчання. Інші люди вчаться скоєно по-іншому.

Як освоїти нову мову програмування за одну ніч?

Як деякі розробники освоюють нову мову програмування за одну ніч? Своїми порадами поділилися користувачі сайту Quora . Найцікавіші відповіді - в нашому матеріалі.

Боб Кернс, програміст і розробник мов програмування, стаж 45 років

Загалом, мови програмування не такі складні. Варто тільки освоїти кілька мов, зрозуміти загальну ідею і залишиться лише запам'ятовувати ключові слова і правила синтаксису. Набагато більше труднощів викликають складні інтерфейси програмування додатків (API).

Ще складнішими є середовища виконання мов. Це той набір API, який йде разом з мовою - візьміть, наприклад, Java. Список пакетів класів займає не одну сторінку. Я працюю з Java вже близько 20 років. І все ще залишаються частини бібліотеки робочих програм, з якими я не знайомий. Деякі з них нові, деякі старі, а я їх просто ні разу не використовував.

Екосистеми (доступні бібліотеки) навіть складніше. Ніхто повністю не знає екосистеми таких стійко функціонуючих мов, як Java або JavaScript. Вони ростуть і розвиваються швидше, ніж людина здатна відстежити.

Google і сарафанне радіо тут якраз до речі.

Дейв Беггет, співробітник №1 в Naughty Dog; співзасновник ITA Software

Кожен професійний програміст, в якому є хоч крапля здорового глузду, знає, як почати робити щось нове, використовуючи робочий приклад звідки-небудь (в наші дні, як правило, з Google). Починаючи з робочого прикладу, більшість програмістів в змозі створювати гідні модифікації і почати вчитися спілкуванню нової системи / нової мови. Подібне виразно можна зробити за один день і це саме те, що ви бачили і про що питаєте.

Однак мова тут йде не про майстерність. Для мене «освоєння мови» має на увазі певний рівень майстерності, а його досягнення навіть у кращих розробників займає тижні, місяці і навіть роки.

Освоєння деяких мов на високому рівні займає багато років. Хоча багато хто вважає себе експертами в С ++, я буду щиро здивований, якщо досконала перевірка 10000 таких експертів допоможе нам виявити більше одного професіонала, який насправді знає мову на рівні, необхідному для написання компілятора або правильної відповіді на спірне питання, що стосується синтаксису або семантики. Я кодую на С з 1979, а на С ++ з 1994 і я навіть близько не є експертом в С ++. Хоча я ніколи до цього і не прагнув.

Так що, кількість часу, необхідне для вивчення мови, в основному залежить від мови. Але в будь-якому випадку знадобиться більше, ніж одна ніч.

Але в будь-якому випадку знадобиться більше, ніж одна ніч

Амо Хьюігл, програміст

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

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

На наступний ранок я приступив до роботи над проектом. І хоча спочатку я зіткнувся з деякими проблемами, в інтернеті було достатньо корисної інформації для виправлення синтаксичних помилок. Протягом наступних 2-3 днів я продовжив роботу над проектом і опанував мову програмування, що дозволило мені без особливих труднощів впоратися з проектом. Моїм єдиним девізом стала фраза: «До кінця дня я повинен знати про цю мову більше, ніж я знав вчора».

Кілька важливих моментів, які допомогли мені у вивченні мови:

1) Проект. Оскільки існував проект, пов'язаний з мовою, я міг поступово освоювати мову.

2) Великі знання в області програмування. На той момент я вже добре володів іншими мовами програмування, що допомогло мені швидко «увібрати» важливі принципи нової мови.

3) Послідовність. Дуже важливо бути послідовним у навчанні. Краще вчитися по 2 години на день протягом тижня, ніж 14 годин за один раз.

Вім тен Брінк, більше 40 років самостійно розвиваю навички програмування

Я вивчаю нові мови на льоту, це не складно, якщо розуміти основи розробки.

Більшість мов включає в себе всього три елементи: затвердження, умови і цикли. Часто саме вони групуються в методах, функціях або операціях, які створюють з них «складових операторів». Принцип орієнтування на об'єкт складається в приєднанні складових операторів до запису даних, і ви отримуєте загальну структуру успадкування. Часто інтерфейси можуть застосовуватися до класів для того, щоб «трансформувати» різні класи в схожі. А решта за великим рахунком - тільки різниця в синтаксисі.

Досвідчений розробник може побіжно ознайомитися з мовою і помітити названі мною речі. Це не робить його експертом моментально, але багато хто зможе зробити деякі висновки щодо нового синтаксису і, тим самим, заощадити час на його вивчення. Можна сказати, що такі розробники більше не працюють з мовами. Вони працюють зі структурами. Не важливо, яку мову ви виберете, всі вони мають схожу структуру.

Ірен Бернард, програмую з 80-х років

Програмування важко зрозуміти, мови програмування, навпаки, легкі (зазвичай потрібно засвоїти лише деякі особливості). Як тільки програміст навчиться програмування, особливо всім необхідним азам парадигми програмування, для освоєння мови йому / їй залишиться лише звернути увагу на деякі моменти.

Різниця між мовами програмування, як правило, також незначна, як і відмінність інтерфейсу Microsoft Office Word від інтерфейсу LibreOffice Write. Обидва виконують одні й ту ж функції (форматують текст, його стилі, параграфи, заголовки, розділи, сторінки і т.д., включаючи таблиці / списки / зображення / і т.д., додамо сюди перевірку правопису, підрахунок слів, автоматичне налаштування полів, створення змісту і т.д.), використовуючи схожі методи. Користувач просто натискає на інші кнопки, розташовані в інших місцях.

Теж саме і з мовами, речі називаються по-різному, пунктуація різна, «граматика» може відрізнятися - але до тих пір, поки обидві мови працюють на основі однієї парадигми програмування, на цьому відмінності і закінчуються. Якщо вони працюють на різних парадигмах (напр., Процедурне НЕ об'єктно-орієнтоване проти об'єктно-орієнтованого, або імперативне проти декларативного і т.д.), тоді це буде швидше походити на порівняння Word і Exel ... вони виконують різні функції по-різному ( навіть незважаючи на те, що один міг би досягти тієї ж мети, однак будуть використані нові шляхи).

Коли мови працюють на основі різних парадигм, стає важкувато. Наприклад: перехід від С до С ++ здається нескладним, але для того, щоб в повній мірі вивчити С ++, програмісту необхідно зрозуміти об'єктне орієнтування, з яким він (а) ніколи не скидав (а) ся в С. Саме ЦЕ займе багато часу, особливо тому, що в іншому С ++ дуже схожий на С (навіть пунктуація і граматика залишаються незмінними). Але припустимо, хтось переходить з Python на Ruby ... Мови дуже схожі, невелика різниця в граматиці, деякі відмінності в пунктуації - мене тягне сказати, що програмісту, «добре» володіє Python, має бути нескладно вивчити Ruby за 1-2 дня.

Ще одне. Що ви маєте на увазі під «освоєнням» мови? Наприклад: досвідчений програміст, який володіє С ++, може легко вивчити Python за один день. Але наскільки добре він / вона буде знати Python? Що щодо створення списків синтаксичними методами, а не використовуючи цикли?

Подібні речі зазвичай передують нові моделі, з якими програміст міг до цього не стикатися, але в той же час їх зовсім не обов'язково знати, щоб використовувати мову. Чи є знання таких моментів обов'язковою умовою для того, щоб заявити, що ви оволоділи Python? Зазвичай це називають «вільним володінням» <вписати мову тут>. Знайомство з тонкощами може зайняти більше одного дня, але навіть в такому випадку, як тільки ви вивчите їх в одній мові, ви виявите щось схоже і в інших.

Знайомство з тонкощами може зайняти більше одного дня, але навіть в такому випадку, як тільки ви вивчите їх в одній мові, ви виявите щось схоже і в інших

Скотт Гартнер, програмую протягом 33 років

Відповідь дуже простий: це неможливо. Можна вивчити синтаксис мови програмування, (особливо якщо це мова на зразок LIST, в якому мінімальна кількість синтаксичних правил).

Однак процес освоєння мови - це все-таки саме процес, а не одноразова дія. Програмую на C # вже протягом 12 років і до сих пір продовжую вчити цю мову. Я працюю з PHP близько 9 років, з Java - близько 8, і я можу далі продовжити цей список. Я вільно володію всіма цими, а також багатьма іншими мовами, але суть полягає в тому, що процес вивчення нового не припиняється ніколи. Якби я захотів повернутися до мови Java, мені б довелося витратити достатню кількість часу, щоб освіжити в пам'яті багато моментів. Я більше не працюю з цією мовою, але я все одно продовжую читати новини, що стосуються його.

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

Джіакомо Сорби, програміст-самоучка, захоплений програмуванням досить, щоб стати настільки хорошим програмістом, наскільки знадобиться

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

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

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

Стів Кук, беру участь на різних рівнях розробки програмного забезпечення на протязі 20 років

Перш за все варто визначити самі поняття «вивчити» і «нову мову»

Часто мені доводиться оцінювати нові технології, включаючи нові мови, об'єктні структури і багато іншого. У мене викликають посмішку компанії, які вважають, що на вивчення нової об'єктної структури мені необхідно півроку, коли на ділі цей процес займе у мене не більше пари днів.

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

«Вивчення мови» можна розуміти по-різному. Я не можу повністю оволодіти мовою за один день, завжди залишатимуться невідомі мені дрібниці, але при цьому після закінчення цього часу я зможу почати кодувати на ньому.

Під вивченням мови я маю на увазі вивчення його структури, синтаксису і основних понять, а не вивчення кожного окремого випадку.

Ключові питання, на які варто звернути увагу:

  • Загальна структура і точки входу
  • Базові структури даних і області застосування. Освоюються за допомогою ретельного опрацювання пари прикладів (категорії, область застосування, використання інтерфейсів)
  • Загальна логіка і управління потоком даних. Рідко вимагає великої кількості часу. По більшій мірі стає очевидним з раніше вивчених мов.
  • Управління потоком і пам'яттю. Йдеться про такі речі, як виклик функції, концепти синхронізації і т.д. Основні відомості зазвичай сприймаються досить легко, хоча складності можуть викликати деякі пункти, такі як, наприклад, детальне управління потоком і пам'яттю, в залежності від ступеня необхідної складності.

Будь-який програміст, у якого є хоч крапля мізків, усвідомлює, що незалежно від того, працюєш ти з цією мовою один день або 10 років, завжди може виникнути ситуація, в якій можуть допомогти тільки зовнішні джерела, Google, наприклад.

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

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

З цієї причини я б порадив витратити час на вивчення, а може навіть і на оволодіння Assembler, С, С ++, а також на Java і C #. Це дасть вам чіткі теоретичні знання, а також розуміння базового рівня. Як тільки ви освоїте їх, варто переходити до вивчення мов, заснованих не так на мові С. Це буде напевно непростим завданням, так як доведеться в деякій мірі змінити хід мислення, але такими мовами, як python або lisp, дійсно варто опанувати.

Це буде напевно непростим завданням, так як доведеться в деякій мірі змінити хід мислення, але такими мовами, як python або lisp, дійсно варто опанувати

Марк Бадіола, INFJ, програміст, блогер, ілюстратор

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

Я працюю в компанії, в якій програмісти не ідентифікують себе як Java-розробник, С або C # -разработчик і т.д. Звичайно, у нас є улюблені мови програмування, але при цьому ми отримуємо задоволення, працюючи з іншими мовами, в тому випадку, якщо ці мови краще задовольнять потреби клієнтів. Тому нам дійсно властиво намагатися за одну ніч вивчити нову мову / оболонку, щоб розробити дієву стратегію, яким чином інтегрувати нашу роботу з вже існуючою системою, або ж мати міцне обгрунтування, пропонуючи ціну за проект.

Я вважаю за краще слідувати трьом простим рекомендаціям:

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

2. Створіть приклад програми, яка зачіпає принаймні ази того, що вам хочеться або необхідно знати. Для інформаційних систем непоганим початком може стати додаток для управління відомостями про співробітників або щось подібне. Таке додаток зачіпає синтаксис, структури даних, а також взаємодіє з базами даних. Ви навіть можете створити логін для забезпечення безпеки. Хоча, деякі використовують для цього готові структури. У мене є знайомий розробник ігор, який завжди починав з понгу, так як саме це стосувалося анімації, спірних моментів, фізичних явищ та інших важливих аспектів в програмуванні ігор.

3. Використовуйте інтернет. Пункт номер 2 підкаже вам напрямок. З його допомогою ви дізнаєтеся, що вам необхідно шукати. Замість запиту «навчальна програма для мови Х», пошук можна почати з чогось більш конкретного, наприклад «визначення класів в мові Х». Особисто я не можу сприймати і запам'ятовувати інформацію, яка не потрібна мені прямо зараз. Наприклад, навіщо вивчати всі типи циклів, якщо в цьому додатку все вони мені не знадобляться? Я буду шукати інформацію про них тільки тоді, коли вони мені будуть потрібні.

Само собою зрозуміло, що я веду мову про мій стиль навчання. Інші люди вчаться скоєно по-іншому.

Як освоїти нову мову програмування за одну ніч?
Як освоїти нову мову програмування за одну ніч?
Як освоїти нову мову програмування за одну ніч?
Як деякі розробники освоюють нову мову програмування за одну ніч?
Що ви маєте на увазі під «освоєнням» мови?
Але наскільки добре він / вона буде знати Python?
Що щодо створення списків синтаксичними методами, а не використовуючи цикли?
Чи є знання таких моментів обов'язковою умовою для того, щоб заявити, що ви оволоділи Python?
Але зачекайте, що ж саме я маю на увазі під цими словами?
Наприклад, навіщо вивчати всі типи циклів, якщо в цьому додатку все вони мені не знадобляться?