Является ли хорошей идеей для меня изучить Python перед C или каким-либо другим языком компилятора?[закрыто]

StackOverflow https://stackoverflow.com/questions/2399471

  •  25-09-2019
  •  | 
  •  

Вопрос

Прямо сейчас я прохожу курс MIT "Введение в компьютерные науки" с помощью OpenCourseWare.В рамках этого курса я изучаю язык Python.

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

Как вы думаете, разовьются ли у меня какие-нибудь вредные привычки или что-нибудь в этом роде с помощью Python?

Редактировать:Изменено на Вики сообщества из-за субъективного характера вопроса.

Я ценю все замечательные ответы на мой первый вопрос SO.На самом деле я просто поражен искренностью ответов / комментариев.Всем большое спасибо!

Это было полезно?

Решение

Выступая с 37 лет работы в Боге, знает, сколько языков, я могу сказать вам, что работа в Python позволяет вам полностью сосредоточиться на получении алгоритма и не беспокоиться о подробности. Отказ Я написал, вероятно, 300-400 000 строк C в моей жизни, и единственный способ, которым он был терпимым, был в основном для создания собственной среды OO.

C имеет его использование, но в наши дни они имеют тенденцию быть либо к а), позвольте вам быть ближе к кусочкому аппаратному обеспечению, либо B) обрабатывать действительно герметичность. Если вы найдете необходимость в этом, посмотрите на инструмент, похожий на Swig или SIP, чтобы интегрировать свой C в свой Python.

Другие советы

Для исторических причин C были первыми языками многие программисты, в частности, эти предыдущие поколения, узнали. И все же многие из них (в том числе в этом старшем поколении), впервые узнали один или несколько других языков, как правило, с более высоким уровнем абстракции (Basic, Lisp, Pascal, чтобы назвать несколько) перед изучением C.

Я был из последнего рода (например, был не моим «родным» языком, хотя я освоил сборку очень рано), и я вполне убежден в много преимуществ связанных с серьезным «туром» в языке C, Хотя, хотя, как вопрос практичности, многие из нас никогда не будут программировать большую часть каких-либо последствий на этом языке. Это сказал, Я не вижу убедительную причину, чтобы сделать C быть вашим первый Язык или любые подмышечные, которые как-то осваивают Python (или пролог или ...), каким-то образом ухудшит свои возможности программирования на следующее десятилетие ...

Итак, мой совет: Наслаждайся Python, возьми его!
Когда вы почувствуете программирование, сделайте точку зрения, чтобы узнать C в какой-то время. Он особенно актуален в учебной программе, который включает в себя сопописание компилятора и / или операционные системы, и, как сказал, актуально во многих других способах. Вы увидите, что кроме возможных «поверхности» / синтаксических балансов (это происходит все время, по крайней мере, для меня при изучении нового языка или переключения к старому языку, после того, как подвергается воздействию чего-то другого для В то время как), у вас не должно быть проблем с C, по крайней мере, без проблем, связанных с вашим изучением других языков.

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

С C Вы получите больше контроля над тем, что происходит, и это также означает, что вы должны писать все эти детали самостоятельно, пока в Python кто-то сделал это для вас, и у вас есть варианты, которые работают практически для всех разных случаев.

Потому что C Нижний уровень (ближе к тому, как работает машина на самом деле работает), он составляется скомпилирован на машинный код более близко к тому, что требует процессоров, когда Python, будучи более высоким уровнем языка, не будет в конечном итоге.

Я думаю, что боли перехода от Python к C будут больше похожи на «Почему я должен сделать все это? В Python я бы сделал в одной строке!»

Я могу только предложить, что обучение C сделает вас ценить Python и другие динамически напечатанные языки больше. Я часто говорю то же самое для любого, кто профессионален с PHP. Создание как почесали некоторые серьезные зубы. И нет, это не похоже на «Когда я был твоим возрастом, я шел 300 миль в снегу в школу».

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

Кроме того, написание многопоточной службы в C сделает вас В самом деле Цените, насколько портативный Python действительно есть.

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

Отказ от ответственности: я в основном использую C.

Вы должны начать где-то начать, и Python является хорошим выбором для стартового программиста: вам не нужно использовать компилятор (-> Простота в использовании), имеет богатую библиотеку (-> вы можете многое сделать) и ориентирован на объект (основной поток в эти дни). Так что избежать разочарования сводится к минимуму в этом отношении. Но всегда имейте в виду, что там есть много других языков, и что вы должны узнать их тоже. Если вы хотите стать программистом и зарабатывать деньги, вам нужно (по крайней мере) забрать C ++, Java или C # после Python.

Хороший вопрос!Всегда помните, что ваши навыки программирования ни в коем случае не должны зависеть от языка.Хотя C - идеальный язык для изучения, когда дело доходит до информатики.У вас есть 4 уровня, когда дело доходит до программирования, и обычно каждый университетский курс для старшекурсников предлагает эти предметы:

  1. Процедурное программирование
  2. Объектно-ориентированное программирование
  3. Программирование со структурами данных
  4. Шаблоны проектирования**

Вы должны идти шаг за шагом.Освоите все эти 4 уровня.Затем, в конце дня, вы должны решить, что вы действительно хотите делать, и тогда у вас будет достаточно знаний о том, какие функции на каком языке вы должны использовать для решения той или иной проблемы.C - это язык многих операционных систем, включая Unix, Linux и Windows.Мощь указателей C пока не может сравниться ни с одним языком.Python - хороший язык, и у него есть свои преимущества.Один важный совет, который я могу дать на этом этапе, касается "синтаксиса".Первоначально вы должны освоить язык C, а также получить немного практических знаний о Python.Как только вы освоитесь с C, вам будет намного проще программировать на C ++, C #, Java и PHP.Но если вы сразу начнете с Python, то вам может быть неудобно работать с языками на основе C_syntax.То же самое касается новичков, которые увлечены программированием и начинают с Visual Basic.Также следите за отраслевыми тенденциями и разработками в области программирования.Но придерживайтесь того, чему вас учат на курсах для начинающих.

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

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

  • Очень быстрое исполнение (Swig, Cython, Psyco, Pypy, Unlanden-Shallow и т. Д.)
  • Платформы, на которых нет во время выполнения Python (но это редки)
  • Спрос на высокую многоядерную параллелизм (разные Python VMS обычно могут иметь дело с этим)

Вероятно, лучше подходить к каждому инструменту из положения необходимости, а не одной из оружия; Другими словами, изучите C только тогда, когда требуется сделать это из-за конкретных ситуационных требований.

У Питона непосредственность, которая облегчает изучение. Python для легкости, C (и родственных языков) для питания.

По указанию вопросов: Нет. Не учитесь сначала. Учите питон.

В конце концов вам придется изучать C, когда вам нужно взломать встраиваемые системы, бутаствия, код ядра Linux и т. Д. Вам нужно будет узнать о указателях, и что ваша система будет Crasch и жжет, если вы не получите их прямо сейчас. Вам нужно будет вернуть использованную память самостоятельно. Обычно это кошмар, и на самом деле не вносит свой вклад в радость программирования, поскольку эти вещи просто мешают и заставляют вас тратить бесконечное время в отладчике.

В конце концов на встроенные системы вы узнаете немного языка сборки, а затем вы будете осознавать, что C - это просто обертка вокруг большинства возможностей сборки / процессы в архитектуре чипа. Указатели - это режим адресации, который поддерживается глубиной у транзисторов.

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

Я не думаю, что вы каким-то образом стану принципиально ошибочны, изучая Python первым. Есть много преимуществ для изучения нескольких языков программирования, а сам Python - это интересный способ исследовать это. Например, если у вас есть некоторые проблемы с производительностью с Python, вы можете исследовать запись некоторых частей вашего кода в C (или Pyrex / Cython или Fortran и т. Д. ...), а затем упаковывать его и сделать его пригодным для использования в вашем коде Python.

Лично я люблю писать много кода вручную, когда я изучаю вещи. Я думаю, что это хорошая практика и писать алгоритмы (на бумаге) в Python - это много раз удобнее, чем писать их в C или C ++ (не всегда). Это в значительной степени по причинам, по которым питер сказал, что на деталях потрачено меньше усилий, и поэтому вы можете потратить это по другим концептуальным вещам.

Я все еще очень любил, но одна вещь, с которой я приезжаю, состоит в том, что язык программирования - это инструмент, но это часто уникальный инструмент. Существуют навыки программирования, которые должны быть взяты с одного языка на другое, и это здорово. Но быть в состоянии «Grok» язык также очень важно, в практическом смысле. По этой причине я чувствую, что любой язык вы решили узнать, в первую очередь не имеет большого значения, потому что важно развивать навык движения и обучения эффективно выражать себя на другом языке в любом случае.

В мире прямо сейчас есть определенная степень Python "Fanboysm". Все больше и больше программистов (некоторые из них очень респектабели) считают, что Python - это ответ на все свои обиды. Увидев, как «Cool» - это Питон, они начинают ездить на языке, при психотической степени, отрицая очевидную истину: Python не предназначен для всего / все.

Если вы будете следовать на пути Python, вы, вероятно, будете разработать дополнительный рефлекс: «Давайте посмотрим в библиотеки, чтобы увидеть, если она еще не сделана»., И через некоторое время, когда придет время, и вам придется изучать C, Вам отчаянно скажу: «Я не могу поверить, что я должен написать свой собственный Dict, используя некоторые пустоты * указатели для удержания моих данных! Что в любом случае с этим C language?!»

Начив C / C ++ в качестве моего первого языка программирования в 1996 году через Borlands Turboc ++ 1.0 (синий экран и желтый текст), я могу серьезно рекомендовать изучать что-то (в этом случае python), кроме C. что сказал, что C / C ++ поможет вам когда-либо хочет узнать больше о аппаратном взаимодействии (встроенная разработка, запись водителя и т. Д.)

Согласно подкастам HanselMinutes Compiler VB.NET записан в C, так что он все еще имеет его использование.

Большинство концепций программирования не зависят от языка; Вы годильнее обслуживание, начиная с языком, который легко учиться и применить, поэтому вы можете сосредоточиться на основах. Этот язык не будет C.

C делает A. какой ужас преподавательский язык; Это никогда не было предназначено для использования в качестве такового. Он был разработан для опытных программистов, которые хотели больше гибкости и контроля, чем другие языки времени (ранние 70-х). Вы тратите больше времени, узнав о quirks C, чем о фактическом программировании.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top