Всегда ли рано изучать новый язык? [закрыто]

11

Личный контекст: я изучал C ++ формально последние 6 месяцев в университете. До этого я баловался JavaScript в течение года. Сейчас я думаю об изучении Python в течение месяца после школы.

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

предвосхищение
источник
6
Если вы понимаете программирование в целом, то изучение новых языков должно помочь вам стать лучшим программистом. Если вы новичок в программировании и не разбираетесь в таких вещах, как управление потоками, типы данных, функции / методы и т. Д., То я подожду, чтобы выучить другие языки.
Человек
Я чувствую себя комфортно в C ++ со всем, что вы упомянули.
Ожидание
1
Я поставлю ваш вопрос в перспективе. За первые 6 месяцев обучения в университете меня уже познакомили с 5 разными языками программирования. Сборка (я забыл точную платформу Moto это было), C, C ++, Visual Basic 6 и Java. Позже я начал изучать Basic, C #, Visual Basic .NET, сборку x86. После колледжа я выучил как минимум 5 дополнительных языков программирования в течение первых 2 лет.
Ramhound
2
Если вы можете выполнять многозадачность, расставлять приоритеты и дисциплинировать подход к обучению, тогда непременно продолжайте изучать второй язык. Обычно лучше всего сосредоточиться и овладеть первым языком. Однако также важно изучить различные парадигмы программирования. Прочитайте раздел программирования по следующим ссылкам, чтобы понять, что я имею в виду: что должен знать каждый специалист по информатике и матрица компетенций программиста
Энтони,

Ответы:

8

Мой опыт работы с Python ограничен некоторым игровым кодом, только немного более сложным, чем hello world, так что это не будет очень детальный ответ для конкретно Python, но я могу сказать вам следующее:

Различия между языками заключаются в деталях, таких как синтаксис, и некоторые особенности языка будут различаться (например, различные способы обработки ошибок, возможности ввода-вывода и то, как компиляторы преобразуют ваш ввод во что-то исполняемое), но C ++ и Python предлагают одинаковое парадигмы, поэтому решение проблем может быть сделано практически одинаково с обоими языками. И C ++, и Python являются императивными и объектно-ориентированными, так что вы, вероятно, довольно быстро освоите python, если освоитесь с C ++, когда освоите новый синтаксис, используя методы решения проблем, которые вы освоили в C ++. Если вы хотите, вы также можете использовать Python для функционального программирования, но я никогда не касался этой части, поэтому я не могу вам многое рассказать об этом.

Это слишком рано? Я не могу точно сказать из вашей истории однозначно да или нет. Вы уже достаточно уверены, чтобы писать полные (GUI) приложения на C ++? (т. е. использовать библиотеки, более сложные языковые функции, такие как дженерики и / или шаблоны и т. д.) Я думаю, что изучение новой языковой парадигмы гораздо сложнее, чем изучение нового языка в той же семье парадигм. Когда вы выходите на новую территорию парадигмы, вам придется потратить гораздо больше времени на то, чтобы получить хорошее представление о том, как решать проблемы с этой парадигмой. Между ОО-языками существуют различия в том, как обрабатывается наследование и как данные передаются в память при передаче параметра / аргумента в функцию, влияющую на производительность. Но, чтобы начать, они, как правило, поначалу беспокоят.

Я предполагаю, что если вы достаточно уверены в C ++, что можете сделать что-то большее, чем просто привет, то все в порядке. Поверхностное изучение многих языков поможет вам понять примеры кода независимо от используемого языка, но создание собственного кода требует более глубокого понимания того, как работают языки и как они отличаются друг от друга.

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

  • Привет мир (текст на экране)
  • Привет, мир, записанный в файл (обучает основам файлового ввода-вывода для этого языка, а также очень часто и другим видам ввода-вывода)
  • Выполнение некоторых стандартных вычислений с различными основаниями (10, шестнадцатеричные, восьмеричные), как целые, так и с плавающей точкой. (учит вас об усечении и числовой записи)
  • Попробуйте использовать некоторую графическую библиотеку, чтобы показать привет мир в причудливом диалоге. (учит вас, как использовать библиотеки и внешний код)
О нет
источник
Заключительные замечания в последнем абзаце превосходны. Хотя я не совсем в полной мере использую приложения на C ++, я ценю ваш аргумент о расширении рамок того, с чем я знаком, даже если это просто поверхностно.
Ожидание
6

Ну, конечно.

В этом нет сомнений, иногда еще рано изучать новый язык программирования.

Простейший случай - это когда язык эль-стинко выходит и прежде чем кто-либо укажет на его непригодность, изучая его, вы повредите свой мозг. Пара, которая приходит на ум, включает в себя BASIC, FORTH и APL.

Для более сложного случая один из великих компьютерных ученых описал эту проблему, которая очень кратко заявила, что практика становится постоянной, и есть много дисциплин, которые следует изучить, прежде чем изучать компьютерные языки, чтобы язык не искажал более фундаментальное понимание , По его словам:

Инструменты, которые мы используем, оказывают глубокое и коварное влияние на наши привычки мышления и, следовательно, на наши мыслительные способности.

Противника, который только что увлекся программированием, зовут Эдсгер Дейкстра, и у него была очень выдающаяся карьера. Он был награжден премией ACM Turing со следующей ссылкой:

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

Документ, в котором он говорит о преждевременном изучении языков программирования:

«О жестокости по-настоящему обучения информатике» http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

Кроме того, пожалуйста, не зажигайте меня, я просто посланник.

DeveloperDon
источник
«Я начал с Бейсика и получил травмы на всю жизнь» - разве это не опровергает вашу точку зрения? Если бы вы познакомились с другими языками программирования на раннем этапе, BASIC не оказал бы такого сильного влияния?
tdammers
Я думаю, мне нужен был смайлик. Если это поможет, я удалил это предложение.
DeveloperDon
3

Всегда ли рано изучать новый язык?

Я бы сказал, да. Если вы все еще придерживаетесь самой идеи, что компьютер может действительно делать то, что вы говорите, то изучение второго языка, вероятно, просто запутает вас.

Но если вы дойдете до точки, когда вы поймете, что компьютер делает именно то , что вы ему говорите, независимо от того, насколько он глуп, то есть вероятность, что вы достаточно разумно понимаете свой первый язык, который смотрит на второй (и третий !) язык не нарушает ваш фокус

Йоахим Зауэр
источник
2

Вы не можете сделать оба? Я хотел бы сделать проект на C ++ и изучить биты Python (только потому, что это так здорово), вы могли бы решать проблемы на ProjectEuler.net, используя Python

В общем, я считаю плохой идеей выучить язык, оставить его и начать изучать новый. Нужно быть гибким, работая с различными парадигмами на ранних стадиях. Но это только то, что я думаю.

nischayn22
источник
ProjectEuler.net выглядит потрясающе! Спасибо за рекомендацию.
Ожидание
2

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

Особенно, когда у вас есть опыт работы всего несколько месяцев, очень легко перепутать детали в уме. Если вы заботитесь о своих оценках и берете класс с такими экзаменами, я буду осторожен. В реальном мире это не проблема.

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

Карл Билефельдт
источник
Если вы, будучи студентом, не можете вспомнить различия между синтаксисами между языками, у вас есть проблема. У вас не всегда будет компилятор для проверки вашего синтаксиса, в этой области есть несколько очень реальных ситуаций, когда вы должны иметь возможность вспомнить синтаксис на месте.
Ramhound
Я не говорю, что это невозможно запомнить, просто это усложняет начинающему. Большие синтаксические различия довольно легко, но профессора могут быть раздражающе разборчивы о деталях , как append()VS. push_back()для списка, который является чем - то даже опытные программисты должны искать , если они не использовали определенную функцию на определенном языке , в то время. Возможность вспомнить синтаксис на месте, несомненно, помогает, но для подавляющего большинства рабочих мест это никогда не требуется .
Карл Билефельдт