É uma boa ideia aprender Python antes de C ou alguma outra linguagem do compilador? [fechado

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

  •  25-09-2019
  •  | 
  •  

Pergunta

No momento, estou passando pelo curso de Introdução ao Ciência da Computação do MIT via OpenCourseware. Como parte deste curso, estou aprendendo a língua Python.

Eu li muitas coisas sobre os benefícios do aprendizado de C. Antes de me aprofundar no Python, me pergunto se serei prejudicado ou ajudado pela aprendizagem de Python primeiro.

Você acha que vou desenvolver algum mau hábito ou algo parecido com o Python?

Edit: mudou para o Wiki da comunidade, por causa da natureza subjetiva da questão.

Agradeço todas as ótimas respostas para a minha primeira pergunta. Na verdade, estou bastante impressionado com a sinceridade das respostas/comentários. Muito obrigado a todos!

Foi útil?

Solução

Falando de 37 anos trabalhando em Deus sabe quantos idiomas posso dizer que trabalhar em python permite que você se concentre quase inteiramente em fazer o algoritmo correto e não se preocupar com detalhes. Escrevi provavelmente 300-400.000 linhas de C em minha vida e a única maneira de suportar era basicamente criar meu próprio ambiente de OO.

C tem seus usos, mas hoje em dia eles tendem a ser a) permitem que você se aproxime de um pedaço de hardware ou b) lida com um loop realmente apertado. Se você encontrar uma necessidade, consulte uma ferramenta como SWIG ou SIP para integrar seu C ao seu Python.

Outras dicas

Por razões históricas, C foi o primeiro idioma que muitos programadores, em particular, foram aprendidos. No entanto, muitos deles (inclusive nesta geração mais velha), aprenderam pela primeira vez um ou vários outros idiomas, normalmente com um nível mais alto de abstração (básico, lisp, Pascal, para citar alguns) antes de aprender C.

Eu era desse último tipo (ou seja, não era minha língua "nativa", embora eu dominei a assembléia muito cedo), e estou bastante convencido do Muitos benefícios de associados a uma "turnê" sincera no idioma C, embora, por uma questão de praticidade, muitos de nós nunca programem muitas conseqüências nesse idioma. Dito isto, Não vejo nenhuma razão convincente para fazer C ser seu primeiro Linguagem, ou qualquer idéia que de alguma forma dominar o python (ou Prolog ou ...) de alguma forma prejudicaria as habilidades de programação para a próxima década ...

Então, meu conselho: aproveite o Python, aceite!
Quando você sentir a programação, faça um ponto para aprender C em algum momento. É particularmente relevante em um currículo que inclui redação do compilador e/ou sistemas operacionais e, como dito, relevante de muitas outras maneiras. Você verá que, além de possíveis, "superfície"/sintático (estes acontecem o tempo todo, pelo menos para mim, ao aprender um novo idioma ou voltar a uma língua antiga, depois de ser exposta a outra coisa para um enquanto), você não deve ter problemas com C, pelo menos nenhum problema associado ao seu aprendizado de outros idiomas.

Não sou um programador especialista, mas pelo meu entendimento e uso é que o Python é uma linguagem muito simples e poderosa que permite que você faça com que você precise.

Com C, você obtém mais controle sobre o que está acontecendo e isso também significa que você deve escrever todos esses detalhes enquanto estiver em Python, alguém fez isso para você e você tem opções que funcionam para quase todos os casos diferentes.

Como C de nível inferior (mais próximo de como a máquina realmente funciona), ela é compilada para o código da máquina mais de perto com o que as CPUs desejam enquanto python, sendo a linguagem de nível superior, não acaba sendo tão rápido.

Eu acho que as dores de transição de Python para C serão mais como "Por que eu tenho que fazer tudo isso? Em Python, eu seria feito em uma única linha!"

Eu só posso oferecer que o aprendizado C fará você apreciar Python e outros idiomas dinamicamente digitados. Costumo dizer a mesma coisa para quem é proficiente no PHP. A criação de ambos arranhou algumas coceiras sérias. E não, não é como um tipo de coisa "Quando eu tinha a sua idade, caminhei 300 milhas na neve até a escola".

Ser capaz de atribuir um valor a uma variável e ter a variável apenas 'se ajustar' para armazenar o que você alimenta é um incrível Realização para quem passou um tempo substancial trabalhando com C em várias arquiteturas.

Além disso, escrever um serviço multi -rosqueado de algum tipo em C fará de você verdade Aprecie o quão portátil Python realmente é.

Existem outras boas razões, o poder, se aproximando do metal, compreendendo o gerenciamento de memória e o aprendizado sobre compiladores e otimização. No entanto, suspeito, a primeira coisa que o atingirá é como as idiomas de nível mais alto são realmente.

Isenção de responsabilidade: eu uso principalmente C.

Você precisa começar em algum lugar, e o Python é uma boa opção para um programador inicial: você não precisa usar um compilador (-> fácil de usar), tem uma biblioteca rica (-> você pode realizar muito) e é orientado a objetos (fluxo principal atualmente). Portanto, a frustração evitável é minimizada a esse respeito. Mas sempre lembre -se de que existem muitos outros idiomas por aí e que você deve aprender também. Se você deseja se tornar programador e ganhar dinheiro, precisa (pelo menos) pegar C ++, Java ou C# após o Python.

Boa pergunta! Lembre -se sempre de que suas habilidades de programação nunca devem depender da linguagem. Embora C seja um idioma ideal para aprender quando se trata de ciência da computação. Você tem 4 níveis quando se trata de programação e, normalmente, todos os cursos de graduação da universidade oferecem esses assuntos:

  1. Programação processual
  2. Programação orientada a objetos
  3. Programação com estruturas de dados
  4. Padrões de design**

Você precisa ir passo a passo. Domine todos esses 4 níveis. Então, no final do dia, você deve decidir o que realmente deseja fazer e, em seguida, terá conhecimento suficiente quais recursos em qual idioma você deve usar para qual problema. C é o idioma de muitos sistemas operacionais, incluindo Unix, Linux e Windows. O poder dos ponteiros de C não pode ser correspondido por nenhum idioma até agora. O Python é um bom idioma e tem seus próprios benefícios. Um conselho importante que posso dar nesta fase é o da "sintaxe". Inicialmente, você deve dominar o idioma C e obter um pouco de conhecimento prático do Python. Depois de se sentir confortável com C, então será mais fácil o programa em C ++, C#, Java e PHP. Mas se você começar a partir do Python imediatamente, poderá não se sentir confortável com os idiomas baseados em C_SYNTAX. O nome é para iniciantes que têm paixão pela programação e comece do Visual Basic. Fique de olho nas tendências e desenvolvimentos da indústria na programação. Mas fique com o que os cursos de graduação estão ensinando a você.

Também sou um estudante de graduação do CS e trabalho como programador ao mesmo tempo, então sei o que você está passando. Espero que meu conselho o ajude.

O principal problema com o aprendizado do Python primeiro é que todos os outros idiomas que você tenta aprender depois que provavelmente sofrerão com a inevitável comparação. No entanto, há momentos em que você devo Use uma ferramenta diferente porque você não tem outra escolha. Exemplos dessas situações podem incluir:

  • Execução muito rápida (SWIG, Cython, Psyco, Pypy, não-amada, etc.
  • Plataformas nas quais não há tempo de execução do Python (mas são raros)
  • demanda por alta simultaneidade de vários núcleos (diferentes VMs de Python geralmente podem lidar com isso)

Provavelmente é melhor abordar cada ferramenta de uma posição de necessidade, e não de prudência; Em outras palavras, aprenda C apenas quando for necessário, devido a requisitos situacionais específicos.

O Python tem um imediatismo que facilita o aprendizado. Python para a facilidade, c (e idiomas relacionados) para a potência.

Como a pergunta é declarada: Não. Não aprenda C primeiro. Aprenda Python.

Eventualmente, você terá que aprender C quando precisar invadir sistemas incorporados, sequencências, código do kernel Linux etc. Você precisará aprender sobre ponteiros e que seu sistema crasch e queimará se você não os acertar na primeira vez. Você precisará devolver a memória usada sozinho. Geralmente, isso é um pesadelo, e realmente não contribui para a alegria de programar, pois essas coisas atrapalham e fazem você passar um tempo infinito no depurador.

Eventualmente, em sistemas incorporados, você aprenderá algum idioma de montagem e, em seguida, perceberá que C é apenas um invólucro na maioria das possibilidades de montagem/CPU na arquitetura do chip. Pointers é um modo de endereçamento suportado no fundo dos transistores.

Todas as línguas modernas fazem de você um programador melhor e mais rápido, e eles acabaram com essas coisas. Você realmente não aprende a usar uma máquina de escrever hoje em dia, a menos que esteja indo para um lugar sem eletricidade, não é? C é simplesmente para aplicações muito especiais.

Não acho que você se torne fundamentalmente falho ao aprender Python primeiro. Existem muitos benefícios em aprender várias linguagens de programação e o próprio Python é uma maneira interessante de explorar isso. Por exemplo, se você tiver alguns problemas de desempenho com o Python, poderá explorar escrever algumas partes do seu código em C (ou Pyrex/Cython ou Fortran etc ...) e empacotá -lo e torná -lo utilizável no seu código Python.

Pessoalmente, gosto de escrever muito código à mão quando estou aprendendo as coisas. Eu acho que é uma boa prática e escrever algoritmos (no papel) em Python é muitas vezes mais convenientes do que escrevê -los em C ou C ++ (nem sempre). Isso é praticamente pelas razões pelas quais Peter estava dizendo, há menos esforço gasto em detalhes e, portanto, você pode gastar isso em outras coisas conceituais.

Ainda sou um hobby, mas uma coisa com a qual estou enfrentando é que uma linguagem de programação é uma ferramenta, mas geralmente é uma ferramenta única. Existem habilidades de programação que devem ser levadas de um idioma para outro e essas são ótimas. Mas ser capaz de 'Grok' uma linguagem também é muito importante, em um sentido prático. Por esse motivo, sinto que qualquer idioma que você decidir aprender primeiro não importa muito, porque é importante desenvolver a habilidade de seguir em frente e aprender a se expressar efetivamente em outro idioma de qualquer maneira.

No mundo agora, há um certo grau de Python "Fanboysm". Mais e mais programadores (alguns deles muito respeitáveis) acreditam que o Python é a resposta para todas as suas queixas. Depois de ver como "legal" é Python, eles começam a evangelizar o idioma, em um grau psicótico, negando a verdade óbvia: o python não se destina a tudo / a todos.

Se você seguir o caminho do Python, provavelmente desenvolverá um reflexo adicional: "Vamos olhar para as bibliotecas para ver se ainda não está feito." E depois de um tempo, quando chegar a hora e você terá que aprender C, Você dirá desesperadamente: "Não acredito que tenho que escrever meus próprios ditos usando alguns indicadores de vazio* para manter meus dados! O que há com esse idioma C de qualquer maneira?!"

Tendo sido ensinado C/C ++ como minha primeira linguagem de programação em 1996 via Borlands Turboc ++ 1.0 (tela azul e texto amarelo), posso recomendar seriamente aprender algo (neste caso Python) que não seja C. que disse que C/C ++ o ajudará se você Sempre quis saber mais sobre a interação de hardware (desenvolvimento incorporado, escrita de motoristas etc.)

De acordo com o podcast Hanselminutes, o compilador VB.NET está escrito em C, por isso ainda tem seus usos.

A maioria dos conceitos de programação é independente da linguagem; Você é muito mais bem servido começando com um idioma fácil de aprender e aplicar para que possa se concentrar nos fundamentos. Essa linguagem não seria C.

C faz um horrível linguagem de ensino; Nunca se destinou a ser usado como tal. Foi projetado para programadores experientes que queriam mais flexibilidade e controle do que outros idiomas da época (início dos anos 70) fornecidos. Você passa mais tempo aprendendo sobre as peculiaridades de C do que sobre a programação real.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top