Чи існує можливість того, що хтось, хто засвоїв усі ключові аспекти C ++ і дуже добре знає основи мови, швидше та простіше вивчить інші мови (наприклад, Python, Perl, Java)?
Чи існує можливість того, що хтось, хто засвоїв усі ключові аспекти C ++ і дуже добре знає основи мови, швидше та простіше вивчить інші мови (наприклад, Python, Perl, Java)?
Відповіді:
Поглиблені знання будь-якої мови програмування, ймовірно, допоможуть вам швидше підбирати інші мови. Це частково, тому що програмування - це спосіб мислення більше, ніж засвоєння синтаксису. Більшість практик програмування стосується більшості інших мов програмування. Ось чому люди кажуть, що ви завжди вивчаєте другу мову програмування швидше, ніж першу.
C ++ - це мова, яка дозволяє набагато більше «контролювати», ніж інші мови. Це може бути як добрим, так і поганим. Наприклад, справжній пістолет є кращим, ніж пневматичний пістолет, коли ви їдете в ліс (адже насправді ви можете щось збити з нього), але він також більш небезпечний для вас і для оточуючих. У C ++ є такі поняття, як управління пам'яттю, про яке вам не потрібно хвилюватися у більшості інших мов. Однак чітке розуміння цих понять далеко не безглуздо навіть при роботі з мовами автоматичного управління пам'яттю. Ви також можете виконувати побітові операції та йти набагато нижче до "металу" мовою на зразок C ++. Навіть базове розуміння в цих сферах може вам дуже допомогти як програміст на будь-якій мові.
Я особисто навчився Java протягом майже 3 років, перш ніж вивчати C ++, і я повинен сказати, що дуже шкодую про це (uni course ...). Це зробило вивчення C ++ (я все ще навчаюся - далеко не «глибокі» знання: D) не настільки просто, як мені б хотілося. Якби я зробив це навпаки, я б сказав, що мені було б набагато легше. Тим більше, коли ти знаєш, ЧОМУ щось робиться певним чином, а не просто бути впевненим у автомагії магії. Якщо мені дозволять дати думку, я б запропонував: C (для базових та універсальних парадигм програмування) -> C ++ (для базового розуміння OOP разом із управлінням пам'яттю) -> Тоді ви можете перейти до будь-якої "справжньої" мови OOP із хороший фундамент, або ви можете продовжити розширеніші теми на C ++, все залежно від того, що ви
ORтаAND
На жаль, немає. Це насправді велика проблема, коли викладаєте C ++ на уроках програмування, особливо на початкових класах: ви можете вивчити принципи програмування або ви можете вивчити мову C ++, але мова C ++ має занадто багато підводних каменів та дурні маленькі дітки, щоб навчитися ефективно ефективно сфера односеместрового класу!
Є багато речей, які були випробувані в C ++ і, зрештою, стали ідіоматичними в мові за цілковитою інерцією, що майже будь-яка інша мова з тих пір, як вона переглянула та відкинула, бо виявилася величезною помилкою. Основними з них є шаблони C ++ і об'єктна модель C ++ (об'єкти як типи значень ніколи не є доброю справою, тому що вона порушує заміну Ліскова і сам OOP).
Так що, якщо ви отримаєте глибокі знання C ++, а потім ви хочете дізнатися інші мови програмування, там буде багато шкідливої і контрпродуктивною падла вам доведеться відучитися , щоб бути ефективними на інших мовах програмування.
Ні. Якщо добре знати C ++, це полегшить вивчення інших мов, схожих на C ++. Але це було б нудно. Чому ви хочете знати дві однакові мови? Це нічого не купує. (Зверніть увагу, що це не характерно для C ++. Це стосується будь-якої мови. Порівняйте з природними мовами: вивчення італійської мови не полегшить вивчення інших мов. Це полегшить вивчення іспанської, французької чи португальської мов та вивчення трьох з них буде легше вивчити четвертий, але навіть вивчення всіх романських мов не допоможе вам трохи вивчити фінську, китайську, хінді, іврит, арабську, пушту, грецьку тощо).
Мови програмування реалізують парадигми. Пітер ван Рой зібрав плакат із 34 основних парадигм програмування .
Парадигми, в свою чергу, складаються з понять. У цьому плакаті перелічено близько 18 концепцій.
Усі парадигми (або принаймні ті, що є на плакаті) складаються з цих концепцій. Усі мови реалізують одну або кілька парадигм, що складаються з цих концепцій. Отже, якщо ви вивчите ці поняття, ви (в деякому сенсі) вивчите кожну мову програмування одночасно.
Звичайно, є ще дуже багато мовних вигадок (синтаксис серед них). Крім того, цей плакат повністю ігнорує введення тексту, і, звичайно, є значна різниця між системою типу F <: ω- стиль, системою типу Scala або динамічною системою типу качки, не кажучи вже про залежною системою типу à la Idris, Agda, Coq, Guru або ATS.
Я б сказав, що глибоке знання будь-якої мови програмування допоможе вивчити інших, принаймні інших мов тієї ж сім'ї. Наприклад, знання C ++ не дуже допоможуть з LISP або Haskell, але для об'єктно-орієнтованих процедурних мов це буде. Мій підхід полягав у тому, щоб спробувати вивчити мову з кожної з різних сімей (процедурна, функціональна, об'єктно-орієнтована тощо) мов добре, тоді ці знання можуть переноситися на інші мови в цій сім'ї. З іншого боку, глибоке знання APL не допоможе ні в чому іншому ...
Я тут прийму іншу інтерпретацію.
C ++ - це гарна мова для вивчення пам’яті та структур даних, оскільки вона змушує вас ретельно продумати такі поняття, як власність та життєдіяльність об’єктів. А вивчення пам'яті та структур даних - одна з найважливіших частин будь-якої навчальної програми з програмного забезпечення.
Але ви повинні дізнатися про структури даних. Якщо ви просто "вивчите C ++", ви дійсно не дуже заробите, і це може сповільнити процес вивчення інших мов у короткому періоді.
Коли я навчався в коледжі, «Структури даних» був необхідним курсом на рівні першокурсника, який пройшов після CS1 (який, принаймні, половина класу склав з). Це було важко. Формат курсу був в основному "Ось структура даних, яку ви ніколи не бачили [наприклад, ліва купа ]. Впровадьте її в C ++ за тиждень, і ваш результат точно збігається з очікуваним результатом, байт за байтом, тому ми може оцінювати його автоматично ". Потім на наступному тижні ви отримаєте нову структуру даних та нове завдання. Я, мабуть, навчився в цьому курсі більше, ніж я в усіх інших моїх курсах разом.
Це такий тип навчання, який потрібно робити, щоб C ++ був цінним.
Кожна мова, яку ви вивчаєте, полегшує вивчення наступної мови, особливо в рамках тієї ж парадигми. Вони сильно позичають один у одного, і через деякий час ви доходите до того, що нова мова схожа лише на сукупність функцій з інших мов, з кількома унікальними поворотами.
Я не думаю, що C ++ є кращим чи гіршим за будь-яку іншу мову в цьому плані. Це одна з більш багатослівних мов, яку я знаю, і робить деякі речі важкими, які прості у більшості інших мов, але це не обов'язково перетворювати на полегшення вивчення наступної мови . Це, як правило, робить наступну мову легшою для використання , хоча. Є різниця.
Ні. Поглиблене знання C або підмножини C ++, що є "в основному C", допоможе при вивченні інших мов, принаймні, під час уявлення про те, що вони мають робити. Поглиблене знання C ++ , з іншого боку, здебільшого буде інформацією, яка заплутує чи не має значення під час вивчення інших мов; якщо ви дізнаєтесь орієнтацію об'єкта C ++ на більш поверхневому рівні, наприклад, коли ви переходите на Perl / Python / Ruby, ви витратите більше часу, не вивчаючи те, що ви знаєте, ніж користуватися ним, оскільки об’єкти на цих мовах реалізовані в зовсім інший спосібніж у C ++. Те саме стосується більшої чи меншої міри для більшості інших мов, а також для інших мовних особливостей (наприклад, шаблони C ++ та поліморфізм Haskell - це в основному одна і та ж особливість, знову ж таки, абсолютно різні реалізації). Тож глибоке знання C ++ здебільшого буде специфічним для C ++.