Чи занадто рано вивчати нову мову? [зачинено]


11

Особистий контекст: Я офіційно вивчав C ++ останні 6 місяців в університеті. До цього я балувався в JavaScript протягом року. Зараз я розглядаю навчання Пітона протягом місяця поза школою.

Розбиваючи свою увагу на початку навчання, я знижую ефективність свого навчання? Чи варто проводити вихідний місяць, продовжуючи працювати на C ++? Або ніколи не зарано вивчати нову мову?


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

Мені досить комфортно в С ++ з усім, що ви згадали.
Передчуття

1
Я поставлю ваше питання в перспективу. Протягом перших 6 місяців перебування в університеті мене вже познайомили з 5 різними мовами програмування. Збірка (я забуваю точну платформу Moto), C, C ++, Visual Basic 6 та Java. Пізніше я пішов вивчати Basic, C #, Visual Basic .NET, x86 Assembly. Після закінчення коледжу я засвоїв принаймні 5 додаткових мов програмування протягом перших 2 років.
Рамхаунд

2
Якщо ви можете багатозадачність і розставити пріоритети та мати дисциплінований підхід до навчання, то будь-яким способом продовжуйте вивчати другу мову. Зазвичай найкраще зосередитися на першій мові та оволодіти нею. Однак важливо також вивчити різні парадигми програмування. Прочитайте розділ програмування з наступних посилань, щоб побачити, що я маю на увазі: Що повинен знати кожен майор з інформатики та матриця компетентності програміста
Ентоні

Відповіді:


8

Мій досвід роботи з Python обмежений деяким ігровим кодом лише трохи складнішим, ніж привіт, тому це не буде дуже глибокою відповіддю для python, але я можу вам це сказати:

Відмінності між мовами полягають у деталях, таких як синтаксис, а певні специфіки мови будуть різними (як, наприклад, різні способи обробки помилок, можливості вводу / виводу та те, як компілятори перетворюють ваш вклад у щось виконане), але C ++ і Python обидва пропонують те саме парадигми, тож вирішення проблем може бути виконано приблизно однаково з обома мовами. І C ++, і Python орієнтовані на імперативність та об'єкт, тому, ймовірно, ви збираєтеся підібрати python досить швидко, якщо вам зручно C ++, як тільки ви освоїте новий синтаксис, використовуючи методи вирішення проблем, які ви вибрали з C ++. Якщо ви хочете, ви можете використовувати Python і для функціонального програмування, але я ніколи не зачіпав цю частину, тому не можу сказати вам багато про це.

Чи занадто рано? Я не можу реально сказати з вашої історії остаточним так чи ні. Ви вже досить впевнені, щоб писати повноцінні (GUI) додатки на C ++? (тобто використання бібліотек, більш складних мовних особливостей, таких як дженерики та / або шаблони тощо). Я думаю, що вивчити нову мовну парадигму набагато важче, ніж вивчити нову мову в тій же родині парадигми. Коли ви виходите на нову територію парадигми, вам доведеться витратити набагато більше часу, щоб отримати гарне уявлення про те, як вирішити проблеми з цією парадигмою. Між мовами ОО існують розбіжності щодо того, як обробляється спадкування та як передаються дані в пам'ять при передачі параметра / аргументу функції, що впливає на продуктивність. Але для початку їх зазвичай спочатку викликає незначне занепокоєння.

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

PS Коли я хочу навчитися поверхнево використовувати нову мову, я зазвичай намагаюся виконати наступні речі, щоб відчути синтаксис мови та поверхневу роботу:

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

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

6

Ну звичайно так і є.

У цьому немає жодних сумнівів, іноді зарано вивчати нову мову програмування.

Найпростіший випадок - якщо мова ель-Стінко виходить і раніше, ніж хтось вкаже на її непридатність, навчившись їй, ви пошкодите свій мозок. Пара, яка спадає на думку, включає ОСНОВНІ, ФОРМИ та APL.

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

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

Суперник просто занурення в програмування називається Едсгер Дійкстра, і він мав дуже видатну кар'єру. Він був нагороджений премією АСМ Тюрінга з наступною цитатою:

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

Документ, де він підриває передчасне вивчення мов програмування:

"Про жорстокість справді викладання інформатики" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

Крім того, будь ласка, не спалахуйте мене, я просто посланник.


"Я почав з" БАЗИКУ "і мені було пошкоджено все життя" - хіба це не спростує вашу думку? Якби вас рано познайомили з іншими мовами програмування, BASIC не зробив би такого сильного впливу?
tdammers

Напевно, мені знадобився смайлик. Якщо це допомагає, я вилучив це речення.
DeveloperDon

3

Чи занадто рано вивчати нову мову?

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

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


2

Хіба ти не можеш зробити обидва ?? Я би зробив проект на C ++ і вивчив біти Python (тільки тому, що це так приголомшливо), ви могли б вирішити проблеми на ProjectEuler.net за допомогою Python

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


ProjectEuler.net виглядає приголомшливо! Дякую за рекомендацію.
Очікування

2

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

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

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


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

Я не кажу, що це неможливо запам’ятати, лише те, що це набагато важче для початківця. Великі синтаксичні відмінності досить легкі, але професори можуть бути прикро вибагливими щодо деталей, таких як append()порівняно push_back()з списком, що є те, що навіть досвідченим програмістам доводиться шукати, якщо вони деякий час не використовували певну функцію певної мови. Можливість згадати синтаксис на місці, безперечно, допомагає, але для переважної більшості робочих місць це ніколи не потрібно .
Карл Білефельдт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.