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

12
задан 3 revs, 2 users 100% 25 November 2011 в 12:20
поделиться

13 ответов

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

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

21
ответ дан 2 December 2019 в 03:06
поделиться

Как сформулирован вопрос: Нет. Не изучайте сначала C. Изучите Python.

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

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

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

1
ответ дан 2 December 2019 в 03:06
поделиться

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

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

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

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

6
ответ дан 2 December 2019 в 03:06
поделиться

В силу исторических причин Си был первым языком, который изучили многие программисты, в особенности программисты предыдущего поколения. Однако многие из них (в том числе и из этого старшего поколения), прежде чем выучить Си, сначала изучили один или несколько других языков, обычно с более высоким уровнем абстракции (Basic, LISP, Pascal, и т.д.).

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

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

10
ответ дан 2 December 2019 в 03:06
поделиться

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

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

Кроме того, написание многопоточного сервиса на Си заставит вас по-настоящему оценить, насколько переносимым является Python.

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

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

6
ответ дан 2 December 2019 в 03:06
поделиться

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

1
ответ дан 2 December 2019 в 03:06
поделиться

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

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

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

1
ответ дан 2 December 2019 в 03:06
поделиться

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

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

0
ответ дан 2 December 2019 в 03:06
поделиться

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

  • очень быстрое выполнение (SWIG, Cython, psyco, pypy, unladen-swallow и т.д.)
  • платформы, на которых нет среды выполнения python (но это редкость)
  • потребность в высоком многоядерном параллелизме (различные виртуальные машины python обычно справляются с этим)

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

2
ответ дан 2 December 2019 в 03:06
поделиться

Хороший вопрос! Всегда помните, что ваши навыки программирования никогда не должны зависеть от языка. Хотя 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 и одновременно работаю программистом, поэтому я знаю, через что вы проходите. Надеюсь, мой совет вам поможет.

2
ответ дан 2 December 2019 в 03:06
поделиться

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

Согласно подкасту Hanselminutes, компилятор VB.NET - это написан на C, так что он все еще используется.

0
ответ дан 2 December 2019 в 03:06
поделиться

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

2
ответ дан 2 December 2019 в 03:06
поделиться

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

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

0
ответ дан 2 December 2019 в 03:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: