Aprender C # como primeira língua é um erro? [fechadas]


26

Eu sei que existem perguntas semelhantes aqui, que eu li, mas recentemente li este post de Joel Spolsky:

Como posso ensinar uma pessoa inteligente, sem experiência em programação, como programar?

E isso me fez pensar na minha maneira de aprender e se ela pode realmente ser prejudicial a longo prazo.

Eu me envolvi com vários idiomas, mas o C # é o meu primeiro idioma sério, li "Head First C #" e criei alguns projetos. Mas depois de ler o post acima, achei um pouco desanimador o fato de estar fazendo tudo errado, obviamente respeito a opinião de Joel, que é o que me impressionou um pouco.

Comecei a ler "Código", conforme recomendado na lista de leitura, e estou achando bastante difícil, apesar de agradável. Sinto como se tivesse tirado o brilho do meu "noobish hacking about" no Visual Studio.

Então agora eu não tenho certeza sobre qual caminho devo seguir? Devo dar um passo atrás e seguir o conselho de Joel e começar a ler?

Acho que meu objetivo principal é tornar-me um bom programador, como todo mundo, mas não quero entrar em más práticas aprendendo uma linguagem .NET quando alguém que eu respeito a respeito acha que é prejudicial.

Pensamentos?


4
Aprender CS da maneira mais difícil pode ser feito, mas somente se você tiver um bom professor.
Job

5
O C # não era meu primeiro idioma no VB.net e posso dizer que não é assim que você começa. Eu acho que o C # será uma ótima linguagem inicial, mas lembre-se de sempre se perguntar por que as coisas são feitas do jeito que são.
Daniel Little

23
Não. Qualquer língua como primeira língua é boa para aprender a teoria da ciência da computação. É verdade que, para fazer carreira, algumas línguas são melhores que outras, mas, para fins de aprendizado, tudo é bom. Alguns dos melhores programadores que conheço começaram com o BASIC em um C64, Apple II ou TI-99 / 4A. Não apodreceu seus cérebros, mas os levou para o próximo idioma e depois para o próximo.
Jesse C. Slicer

5
Além disso, depende do que você planeja fazer com esse conhecimento. C # resolve problemas de negócios dia após dia onde eu trabalho. Não vejo C na fronteira há duas décadas e me sinto nojento quando preciso.
Jesse C. Slicer

19
Aprender algo nunca é um erro. É sempre muito melhor do que não aprender .
SK-logic

Respostas:


80

Eu me envolvi com vários idiomas, mas o C # é o meu primeiro idioma sério, li "Head First C #" e criei alguns projetos. Mas depois de ler o post acima, achei um pouco desanimador o fato de estar fazendo tudo errado, obviamente respeito a opinião de Joel, que é o que me impressionou um pouco.

Também respeito as opiniões de Joel, mas são exatamente isso: opiniões . Não há absolutamente nada de errado em usar o C # como idioma inicial.

O maior conselho que posso lhe dar, ou qualquer pessoa que faça alguma programação (mesmo que esteja começando com baunilha C!), É não ficar estagnado e não ser religioso . Não me importo com qual linguagem de programação você está iniciando ou com que pureza ou justiça é essa linguagem - hoje em dia você não pode se dar ao luxo de ficar apenas no mundo da programação.

Por exemplo, comecei a programar com o PHP3 quando era adolescente. Criei alguns aplicativos da Web pequenos e alguns sites; Eu pensei que era um programador genial e que eu poderia fazer qualquer coisa com o PHP3, e desaprovava as pessoas que eram todas sobre ASP ou BASIC. Rapaz, eu estava errado.

Não comecei a florescer verdadeiramente como desenvolvedor até começar a expandir meus horizontes e estudar outras linguagens e conceitos de programação. Durante o ensino médio, aprendi RealBASIC e depois o Visual Basic. Depois da escola de negócios, quando me tornei um desenvolvedor profissional, comecei a aprender c # e Javascript a sério.

Agora, não me entenda mal aqui - Eu estou não defendendo que você tentar ser um Jack of All Trades. No coração, e no comércio, eu ainda sou um programador de PHP. PHP é meu pão com manteiga, e eu sei por dentro e por fora. No entanto, minhas habilidades em PHP não se tornaram o que estavam fazendo apenas PHP. Aqui estão alguns conceitos altamente importantes que eu não entendi do PHP, apesar de trabalhar profissionalmente.

  • Javascript: Encerramentos
  • jQuery (sim, separado): o DOM e o Ajax
  • Visual Basic: programação orientada a objetos
  • C #: genéricos e encerramentos
  • Ruby (on Rails): O poder do design MVC

Eu poderia continuar, assim como muitos outros neste site, por dias. Mesmo sendo um programador de PHP, eu pude trazer todos esses outros conceitos maravilhosos de volta ao trabalho que faço todos os dias.

Qual é o meu ponto? Aprenda C #. Torne-se um mestre em C # - você terá uma carreira longa e bem-sucedida e provavelmente realizará algumas coisas surpreendentes. Mas não se engane. Viaje e prove outras línguas, ambientes e conceitos.


+1: @toleero - C # ou Java é perfeitamente adequado para começar a aprender. Joel e Paul Graham Beating the Averages estavam tentando entender o ponto de os desenvolvedores estagnarem com os idiomas escolhidos, conforme apontado, isso é muito comum.
Justin Escudo

O Objective-C também ensina MVC, a propósito, mas é menos convencionalizado.
Moshe

4
+1. Na minha opinião, você não pode realmente ser um grande desenvolvedor e um mestre do seu idioma principal, sem ter aprendido e brincado com outros idiomas. Essa é a melhor maneira de expandir seu conhecimento e realmente apreciar os aspectos fortes do seu idioma principal.
Niklas H

3
+1. A chave para tirar isso são as palavras que ele escolheu para negrito. É muito fácil aprender algo como Java e C #, ou mesmo C e passar 10 anos de sua vida escrevendo código da maneira que você sempre fez. Esforce-se, aprenda um novo idioma todos os anos. Questione o que você faz, tente encontrar uma maneira melhor. E o mais importante, mantenha-se envolvido com os programadores e o StackOverflow.
Andrew T Finnell

Você pode fazer todos esses exemplos em c #. Dom / ajax: bibliotecas C # xml e ajax. Orientado a Objeto? Verifica. MVC? Estrutura de asp.net mvc.
Carra

21

quando alguém que eu respeito a opinião pensa que é prejudicial.

Isso me lembra uma história envolvendo Richard Feynman. Um estudante da Caltech perguntou ao eminente cosmologista Michael Turner qual era o seu "viés" em favorecer um tipo de partícula como candidato para compreender a matéria escura, e Feynman retrucou e disse: "Por que você quer saber o viés dele ? Forme o seu próprio! ... Não preste atenção às autoridades, pense por si mesmo. "

Programadores vêm de todas as esferas da vida. Hoje, o Java é ensinado em muitas escolas e faculdades, mas ainda não havia sido inventado quando Joel Spolsky estava na escola. Não existe um "caminho verdadeiro" quando se trata de se tornar um bom programador. Certamente existem alguns clássicos como o SICP que a maioria dos programadores encontra em algum momento, mas não há um padrão rígido e rápido. O principal é começar em algum lugar e se concentrar na construção de conceitos. Um grande programador disse uma vez algo como:

Programadores ruins se concentram no código, bons programadores se concentram em algoritmos.

Eu acho que o C # é uma linguagem boa para começar, mas eu aviso que você seja cuidadoso com o Visual Studio. É uma tremenda IDE, mas se você arrastar um DropDownListe ligam um GridViewa um ObjectDataSourcee usar um Buttoncontrole para fazer uma DropDownListpesquisa com base, em seguida, a maioria do trabalho é feito pelo IDE e você não está realmente a programação. Aproveite as ferramentas de IDEs, mas sempre tente construir conceitos e desenvolver conhecimento.


Uma resposta incrível.
Yasir

3
Primeiro você diz "Bons programadores focam em algoritmos" e depois diz "o trabalho é feito pelo IDE e você não está realmente programando". Qual e? Eu posso escrever um programa, fazer o fluxo de trabalho corretamente e não me importo com "detalhes de implementação" como GridView e DropDown (supondo que eu saiba o suficiente para escolher os corretos e como implementá-los corretamente). +1 no restante da pergunta, mas o uso de um IDE não impede que você seja um bom programador.
WernerCD

@WernerCD - Quando eu disse "o trabalho é feito pelo IDE", estava me referindo ao exemplo específico que dei. Se você pegar um garoto que nunca fez nenhuma codificação e pedir que ele siga as instruções passo a passo em um IDE, ele criará uma página de trabalho, mas não está programando. Acho que os IDE são incrivelmente úteis para o trabalho de programação, mas como um novato completo, é melhor você aprender o que é recursão, em vez de arrastar os controles.
precisa

2
@ Graham - Desculpe, mas eu discordo. Ele não está tentando aprender o desenvolvimento de TI ou software - ele está tentando aprender programação. As ferramentas IDE são, na minha opinião, melhor deixadas para mais tarde, depois que você é um programador competente.
BlackJack 12/08

16
A chave é que um bom desenvolvedor não acredita em mágica . O trabalho realizado pelo IDE (ou qualquer outra ferramenta) é uma conveniência, um atalho, mas não um substituto para o entendimento .
Bevan

7

Eu sou apenas um júnior, mas com toda humildade e respeito por aqueles infinitamente mais experientes, tenho que confessar que também não entendo essa atitude.

Um programador comentou abaixo da resposta de Joel: " como alguém que teve que bater com a cabeça na mesa sobre" programadores "que eram altamente recomendados por suas habilidades em C #, mas não podiam fazer coisas simples como implementar uma classe base muito bem documentada, encontre vazamentos de memória em programas c e c ++ " ...

Mas por que encontrar vazamentos de memória em aplicativos C ++ deve ser simples para alguém que nunca alegou conhecer C ++? :) Eu não entendo. É como criticar um psicólogo por falta de habilidades do dentista. Certamente não sou um bom programador, mas sinto que não é porque não conheço C ++ - é porque não conheço suficientemente o framework e as linguagens que estou usando.

"não podia fazer coisas simples como implementar uma classe base muito bem documentada (...) ou simplesmente descobrir um problema por conta própria ou aprender uma nova idéia em um ritmo moderado"

OK, mas - correlação não significa causalidade, e o que nos leva a supor que a falta de habilidades gerais de programação - o que eu não duvido - é resultado de sua escolha de linguagem?

Ou um efeito de C # ser sua primeira língua de escolha?

Eu posso ver outras explicações plausíveis (talvez C # é apenas na moda, e, portanto, atrai um grande número de novatos ... a maioria das pessoas para quem o C # é a primeira língua não têm sido programação muito tempo em tudo , e que é mais de uma desvantagem no por direito próprio do que nunca programar em outro idioma ... etc., etc.).


É mais como criticar um carpinteiro que só pode usar ferramentas elétricas. Mesmo em idiomas coletados pelo lixo, saber quanto tempo suas variáveis ​​devem permanecer é uma habilidade fundamental. Se você não consegue reconhecer a vida útil pretendida de uma variável com um flagrante freeolhando diretamente para você, como você a reconhecerá em um programa escrito em um idioma que não fornece essas pistas?
Karl Bielefeldt

1
Eu entendo o seu ponto. Eu sei o básico de vida das variáveis (quase tanto quanto eu posso precisar em C #, numa base diária: escopo, using, IDisposable, manipuladores de eventos referenciando os seus ouvintes etc.), mas eu não poderia mesmo a sério tentar diagnosticar uma memória vazar em um aplicativo C ++, porque nem estou familiarizado com a sintaxe! Não sei o que significa asterisco.
Konrad Morawski

5

Eu diria que aprender um idioma e segui-lo é mais um erro do que decidir com qual idioma você deve começar. É claro que existem alguns idiomas que você pode aprender que são mais fáceis, mas é melhor tentar aprender um que você estará usando muito (em uma escola, a escolha do idioma já é feita pela escola). Depois de aprender corretamente uma linguagem e usá-la ativamente após alguns meses, você deve se familiarizar com outra linguagem de programação e comparar.

No .NET, é fácil usar duas linguagens de programação (mais ou menos ) diferentes, pois é possível alternar entre Visual Basic e C #. Então você pode aprender Visual Basic e ver quais são as diferenças. Nesse nível, você deve ter proficiência em codificação processual básica com as três estruturas básicas de programação; se você puder ser criativo com todas elas (e saber como usar variáveis), estará no caminho de se tornar um grande programador:

  • Sequência - O código é escrito em uma sequência de etapas que se seguem da maneira que você especificar (define um "salto", passo a passo e gotos)
  • Condicional - o código pode ter pontos de decisão (define instruções if, instruções switch-case)
  • Looping / Repetição - O código pode se repetir, dada alguma decisão (que é uma extensão de ambos acima, define loops de for, do while)

Não importa se a sua linguagem de programação secundária será a sua mais ativa ou não, apenas sabendo que as linguagens de programação (especialmente se elas seguem o mesmo paradigma) são muito semelhantes umas às outras e existem pequenas nuances na verdade, um longo caminho para entender como a programação de software funciona.

A partir disso, pelo menos uma vez por ano, tente aprender uma nova linguagem de programação que siga outro paradigma de programação . Você não precisa acompanhar completamente o novo idioma, mas existem alguns benefícios em conhecer outros paradigmas. Existem vários paradigmas e algumas linguagens de programação se misturam entre muitas (observe que o C # realmente tem subconjuntos dos três seguintes):

As coisas mais importantes que você deve aprender são que muitas linguagens de programação seguem seu próprio conjunto de expressões idiomáticas e uma API básica. Portanto, quando você aprender um novo idioma, tente aprender bem esses idiomas e a API e ficará bem quando criar coisas. Um bom motivo é que você se tornará melhor no design e na solução de problemas de programação. Algum idioma em um idioma, pode lhe dar algumas dicas sobre como resolver um problema no seu idioma principal.

Saiba também que há outra boa razão para você aprender outras linguagens de programação, além da linguagem principal que mais usará: suas chances de emprego são muito maiores.


5

O foco da sua pergunta e muitas das respostas aqui estão em C #. Da Wikipedia :

A linguagem C # pretende ser uma linguagem de programação simples, moderna, de uso geral e orientada a objetos.

Com base nisso, parece seguro dizer que você pode aprender C # como primeira língua sem causar nenhum dano a longo prazo ao seu cérebro. Não acho que Joel estivesse condenando toda a linguagem quando escreveu :

Tentativas de pegar um atalho e ir diretamente para aprender exatamente o que você deseja aprender agora (como começar com C # e ASP.NET) estão condenadas.

O problema não é o idioma, está tomando atalhos. Com muita freqüência, as pessoas tentam seguir rapidamente seu objetivo final seguindo tutoriais passo a passo ou livros "aprendam tudo em 24 horas". Você não precisa gastar muito tempo no Stack Overflow antes de começar a perceber que há muitas perguntas ao longo das linhas de: "Eu nunca escrevi uma linha de código na minha vida, mas estou entrando no iPhone alguém pode me dar instruções passo a passo para fazer exatamente o que eu quero fazer? Obrigado! " Não estou dizendo que você está adotando essa abordagem, mas é algo contra o qual você deve se proteger.

Se você deseja desenvolver habilidades sólidas de programação, comece aprendendo habilidades fundamentais. Se você tentar pular diretamente para aplicativos de OOP e GUI e outros, provavelmente perderá esses fundamentos. Os livros que Joel apontou são realmente muito bons. Eu examinei apenas o C # Yellow Book (PDF), mas parece que provavelmente é uma introdução melhor à programação do que a maioria dos livros em C # que vejo nas lojas.


Eu gostaria de salientar que o fraseado não é "não aprenda C #", é "C # e ASP.NET" (ênfase adicionada). Não sou programador de C #, mas o .NET e o CLR são uma excelente plataforma para começar a aprender.
forivall

5

Para mim, essas coisas naquele outro artigo pareciam um tanto irracionais. Sim, eu frequentemente recomendo o SICP para desenvolvedores sérios que realmente querem melhorar, mas apenas para aqueles que querem ir além da "norma" e aprender a mágica profunda. De fato, durante anos o SICP foi o texto padrão de programação para calouros do MIT; mas muitos programadores sólidos nunca tiveram a oportunidade de frequentar essa instituição fina, porém cara e altamente seletiva.

Então, o que eu recomendo, em resposta à sua pergunta? Comece com o que você tem e aprenda a pensar como um programador, em vez de apenas aprender um idioma específico.

Se você tiver uma implementação C # disponível, bem, posso dizer que é uma linguagem perfeitamente adequada para um trabalho rígido como eu - como Java, JavaScript, Python, Ruby, Scala, Scheme e as muitas outras linguagens que tenho. aprendido ao longo dos anos. No final, tento selecionar os idiomas e ferramentas corretos para o trabalho específico em questão, e isso significa mudar de idioma, como chapéus.

Não há nada errado em usar maneiras divertidas de aprender, como abordar Ruby por meio do Why Poignant Guide and Shoes (como eu recomendei em outro post recente ). Existem caminhos misteriosos e místicos, como bater a cabeça contra The Little Schemer e The Seasoned Schemer a caminho do SICP . Muitos pensadores modernos pedem que você pule todo esse material acadêmico e "corporativo" mais antigo e mergulhe diretamente no JavaScript, JQuery e HTML5. Existem muitas maneiras de começar, por isso não perca muito mais tempo. Basta escolher um e obter a codificação!

Realisticamente, acredito que hoje em dia poucos profissionais que o enviariam para trás para aprender primeiro o Assembler ou C / C ++. Francamente, se o fizessem, não acredito que estariam prestando muito serviço a você.

Então, para embelezar um pouco o "comece com o que você tem", tenho mais três conselhos:

  • Escolha uma linguagem de programação que lhe pareça interessante e uma abordagem de aprendizado que pareça fazer sentido e dar tudo de si. Torne-se alfabetizado no idioma escolhido; leia o máximo de código possível!
  • Coloque as mãos no teclado imediatamente e comece a codificar enquanto aprende. Faça você mesmo todos os exercícios elementares dos seus livros de programação e pratique todos os tutoriais que encontrar com os dedos clicando com facilidade para fazê-los realmente funcionar. Você ficará surpreso com quantas habilidades você ganhará ao corrigir erros em demos que deveriam estar funcionando código, mas não estão!
  • Gaste a maior parte de seu esforço para aprender como os bons programadores pensam o caminho para resolver problemas. Aprenda a analisar e decompor problemas e sistemas complexos, dividindo-os até que você realmente os entenda. Em seguida, aprenda a sintetizar e projetar soluções automatizadas, construindo-as para facilitar a tarefa de alguns seres humanos neste planeta.

Comecei com o FORTRAN IV e o QBASIC e se eles não me arruinarem, o C # também não vai te machucar! Boa sorte e verifique se você está se divertindo enquanto aprende!


Você pode encontrar as palestras origial por Abelson & Sussman aqui: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures
BlackJack

4

Acho que o melhor conselho que já vi quando se trata de pessoas perguntando "que idioma devo aprender?" é simples: um bom programador pode trabalhar em qualquer idioma.

Tenho argumentos contra essa afirmação, tenho certeza, mas o ponto é: aprenda a ser um bom programador, em vez de um especialista em linguagem, primeiro. Os construtores não se especializam em construir exatamente um terreno, eles aprendem as habilidades de seu ofício e os aplicam em qualquer terreno em que precisam.


Vou marcar com +1. É semelhante à minha analogia usual de construção de motocicletas. Você pode construir uma motocicleta decente trabalhando na linha de montagem e seguindo o livro, mas os construtores realmente impressionantes são os helicópteros que conhecem as entranhas da moto dentro e fora e, como resultado, você obtém coisas incríveis.
Jarrod Nettles

3

Às vezes, suspeito que os idiomas escolhidos têm muito mais a ver com nossas personalidades, e eles estão conectados e muito menos com considerações práticas ou acadêmicas do que gostaríamos de admitir.

Dito isto, aprender coisas novas nunca é prejudicial. Você saberá no dia em que cruzou o limiar em direção a um cérebro evoluído ou talvez quebrado (suponho que tudo seja uma questão de perspectiva) quando começar a perceber que tudo tem um manual. Você pode realmente fazer o que quiser se tiver algum talento e estiver realmente interessado em fazer, e não no aspecto de ser de um programador.

Pelo menos mexa com Python e JavaScript. É uma vantagem de aprendizado definitiva ser realmente capaz de escrever código e vê-lo executar imediatamente em um ambiente de console acessível de E / S de arquivo, como IDLE, ou em um ambiente sandbox como um navegador. O que eu não gosto em C # e Java é que eles querem que tudo fique confinado às classes, mesmo que você esteja apenas escrevendo uma função simples com invólucros sem sentido para manter seus colegas ou um compilador excessivamente restritivo felizes. A outra coisa que eu gosto sobre JS e Python é que eles realmente permitem que você defina seu próprio paradigma. Um pouco flexível demais para muitas preferências de desenvolvedores. Ainda não tenho certeza do que pensar da sabedoria de sobrecarregar os operadores básicos, mas tenho certeza de que amo o Python por permitir a opção.

Também não caia na mentira cruel de escolher o idioma principal com mais listas de empregos. É melhor ser um peixe grande em águas médias fazendo o que você gosta do que um membro de uma horda de peixes insuportáveis, na maior parte ruins, que transformam cada procura de emprego em mais uma loteria do que em um processo de correspondência.


Como alguém que contrata essa horda de peixes insuportáveis ​​no meu trabalho diário, tenho que concordar. Há muitos comentários realmente úteis nesta discussão; Espero que o @toleero o ache útil e não desanime. Na minha opinião, embora Joel seja um gênio, nunca devemos aceitar tudo o que alguém diz como evangelho. Os livros que ele recomenda são úteis. Mas o mesmo acontece com a codificação diária e a obtenção de experiência prática. Faça isso em várias linguagens (por exemplo, C # e algo menos parecido com C - um Basic, talvez, ou Python ou Ruby) e você se tornará um desenvolvedor pelo menos tão bom quanto muitas pessoas por aí: o)
Owen Blacker

3

O C # não é tão ruim quanto o Java em uma extensão considerável. Eles têm melhor suporte para muitos conceitos como programação funcional, programação genérica, destruição determinística e tipos de valor, sobrecarga de operador etc. Seu suporte a esses recursos ainda pode exigir muito trabalho, é claro, mas é muito melhor que Java, mesmo se não é C ++.

Em segundo lugar, acho que você está lendo mal o que Joel disse. Se você pode dominar ponteiros e recursão, não importa qual idioma você está usando agora. O mais importante seria usar um pouco de unsafecódigo, entender unsafe quicksortou algo assim e voltar ao restante do C # normal.

Ah, e comece a ler :)


2

O primeiro idioma produtivo para mim foi o C #. Embora eu tenha brincado com Foxpro na escola e um pouco de C na faculdade. C # é um ponto de partida muito bom e muito bom para qualquer pessoa. Segue os fundamentos gerais da programação, como digitação forte, encapsulamento, herança etc., que acredito que se deve sempre aprender, não importa se eles são usados ​​ou não. Mais tarde, você sempre pode mudar para outras linguagens como Python, que não seguem a padronização da programação fundamental.

O outro fator adicional que as pessoas realmente não adicionam ao aspecto de aprendizado do C # é a disponibilidade do melhor IDE para qualquer idioma que eu já tenha visto. O IDE do Eclipse também é bom, mas depois de usar o Visual Studio, você agradecerá à Microsoft.

O C # aprimorado em C assegura que você não precise aprender outros idiomas antecipadamente. Todas as línguas ao longo de mais de uma década evoluíram da natureza do C, até do JAVA.

Portanto, o veredicto é que o C # é um ótimo ponto de partida que permite que você aprenda outros idiomas rapidamente no futuro


O Eclipse é muito melhor para mim do que o Visual Studio. Mas eu concordo com você - o C # seria um ótimo idioma, especialmente se não fosse de propriedade de & preso aos maus proprietários de Redmond, destruidores de padrões proprietários .
Thomas W

2

Aprender C # como primeiro idioma não é um erro, desde que você, mais cedo ou mais tarde, prossiga e comece a aprender um segundo idioma. Isso é muito mais importante. Melhor ainda, se essa segunda linguagem for um pouco diferente de C # (javascript ou ruby ​​seria, a esse respeito, melhor que java). Cada idioma tem seus prós e contras, e são as diferenças que o tornarão um programador melhor a longo prazo.


1

Por mais que eu recomendo que você aprenda vários idiomas (como os outros sugerem), verifique se conhece um ou mais idiomas que você aprende muito bem.

O risco de conhecer muitas línguas é que você nunca pode aprender uma língua completamente causando frustração ao realmente querer resolver um problema.

Conhecer a construção do loop for é muitos idiomas, mas é inútil se você não souber como lidar com erros em nenhum deles.


1

Não se preocupe com o fato de você aprender C # primeiro. É como se preocupar com o fato de seu primeiro passo ter sido dado com o pé esquerdo ou direito. A única diferença entre aprender um idioma gerenciado primeiro é que você está apenas atrasando quando precisa aprender ponteiros e gerenciamento detalhado de memória. Na verdade, isso pode funcionar a seu favor, pois quando chegar a hora de aprender C, a única coisa nova com a qual você se preocupará é o gerenciamento de memória - você também não estará lutando para aprender estruturas de controle, o conceito de funções etc. ser capaz de se concentrar completamente em ponteiros e gerenciamento de memória.

O estereótipo existe porque existem programadores de linguagem gerenciada que nunca fizeram a segunda parte e aprenderam C e C ++ e, em seguida, aplicaram-se a trabalhos em C e C ++.

É como aprender um instrumento musical - o primeiro é difícil porque você está tentando aprender a mecânica de ler música escrita E a mecânica física de articular um instrumento para fazer o que você deseja. Para o segundo e instrumentos subsequentes, você aprende que pode se concentrar apenas no que torna esse instrumento diferente do que você já conhece.


1

É difícil para o novato, sem dúvida. Eu fiz vb, javascript, PL / SQL, T-SQL, Uniface e um pouco de c # para citar alguns.

Alguém mencionou anteriormente o Visual Basic como onde aprendeu sobre programação orientada a objetos e, para ser sincero, o VB.NET tem a sintaxe mais fácil de entender de qualquer linguagem que eu já vi. A melhor característica é que as palavras-chave correspondem aos conceitos descritos de perto.

Por exemplo, a função myHandler () lida com myButton.click

ou classe humano estende implementos de mamíferos

Sério, para facilitar a leitura quando você é iniciante, como mais você gostaria que a sintaxe aparecesse?

Quando você procura propriedades e métodos (e diferencia entre submarinos e funções), é muito mais fácil ler no VB.

Da mesma forma, ao declarar variáveis

Dim myString As string - óbvio qual é o tipo e qual é a instância

A distinção entre maiúsculas e minúsculas em C # incentiva o que para mim é um hábito muito ruim - ter o mesmo nome para classe e instância, sendo um em maiúsculas e outro em baixo.

por exemplo

Humano humano

  • existem tão poucas palavras no seu vocabulário que você precisa reutilizar as existentes com maiúsculas?

se você chamar human.think, seria fácil confundir uma instância com uma classe e pensar que você estava chamando um método estático de relance. E, muitas vezes, olhar de relance é como percebemos o código; não temos tempo para passar o mouse sobre cada elemento para permitir que o editor nos diga o que está acontecendo.

O C # pode ter algumas vantagens, mas é muito mais difícil começar - mesmo que economize a digitação. É por isso que definitivamente deveria haver um lugar para os dois idiomas.


+1 para humano humano. Tendo o c # como um segundo idioma (pão e manteiga = Delphi) por meio de um livro, em vez de ter uma experiência profunda com o código existente, sempre faz meu cérebro doer um pouco ao ver isso. Embora existam partes da linguagem que eu realmente gostei, arrastar a diferenciação entre maiúsculas e minúsculas de C foi um grande erro no IMHO.
Matt Allwood

Claro, porque Dim myHuman as Humané muito melhor? : D
scrwtp 28/11

0

A maior desvantagem que vejo é que o Visual Studio e as ferramentas associadas são muito, muito agradáveis ​​- coisas como intellisense e conclusão de código podem facilmente se tornar muletas. Eu geralmente argumentaria que o ambiente pode ser tão agradável e favorável que você tende a se sentir um pouco perdido quando precisa, digamos, invadir o código ruby ​​em um editor de texto. Ah, e você também costuma perder coisas como linq.


0

C # é perfeitamente adequado para iniciar a programação.

Foi o que me disseram para começar, sem sequer ter a chance de me envolver em mais nada (além do Hello World em Java, algumas coisas básicas do LOGO e algumas coisas no Scratch, mas nada "Sério").

No geral, pode ser difícil - há muitas coisas que não parecem intuitivas e têm limitações, mas acho que isso incentiva a boa codificação e é ótimo quando você pega o jeito. Quero dizer, isso lhe dá mais poder e é um pouco mais profissional que o Python (o que geralmente é sugerido), e isso faria muita diferença - tentar C ++ depois de C # não era muito doloroso, mas se eu tivesse começado com Python, então seria um grande obstáculo, mesmo no nível da sintaxe.

Além disso, possui um bom suporte de plataforma cruzada na forma de Mono (para aqueles que acham que o Mono não é grande coisa - o Unity Game Engine permite que você codifique uma versão dele). Também é bastante útil para a maioria das coisas, seja script de jogos, design da Web ou aplicativos do Windows. É claro que alguns idiomas serão melhores para determinadas linhas, portanto, isso dependerá da direção geral em que você planeja seguir - por exemplo, se você estiver indo na direção da Web, o C # (ASP.NET) seria definitivamente um boa ideia. Se você planeja entrar em jogos, pense em C ++.

No final, vale a pena aprendê-lo, mesmo que você não o use em favor da simplicidade do Python ou da natureza arcaica do Java (como o ciclo de lançamento do Java é REALMENTE lento) - você aprende uma boa codificação práticas, embora não seja muito complicado para um novato aprender.


é difícil ler este post (parede de texto). Você se importaria de editá -lo em uma forma melhor?
Gnat

1
Como é isso? Ainda é difícil de ler, ou ok agora? A propósito, obrigado pelo aviso.
Sbspider

-1

Para ser um programador, você precisa ter paixão. Os programadores que conheço são os que se esforçam para aprender e perceber as mudanças no setor. Comecei minha programação com o Commodore Vic 20 (sim, antigo) e segui para outras novas linguagens. Parte dos meus anos de programação incluía COBOL. Eu também comecei a perceber que alguns idiomas funcionavam melhor em certos processos versus outros. Meu conselho é que você aprenda qualquer idioma e entenda os conceitos básicos de programação, como loops, métodos e comparações. A maioria dos idiomas suporta esses três conceitos. Você nunca deve dizer "Esta é a melhor maneira", mas sim "Como posso melhorar isso". A pior coisa da última frase é que você pode se dedicar à engenharia. A programação é divertida, divertida! A Internet abriu uma maneira totalmente nova de experimentar a programação, porque o nível de acesso que temos às informações hoje é impressionante. Para mim, antes da internet, tive que ir à prateleira e puxar os livros de programação da IBM GREY e aprender. Hoje você pode simplesmente digitar algo no google e whammo.


2
é difícil ler este post (parede de texto). Você se importaria de editá -lo em uma forma melhor?
Gnat #

-3

Uau, muitas respostas. Aqui está o meu ponto de vista:

C # não é um lugar para aprender ciência da computação. Eu vejo isso como uma idéia extremamente ruim. Vou listar algumas das minhas preocupações abaixo.

  • C # é um idioma da Microsoft. Não que eu esteja julgando a EM aqui, apenas fora do mundo da EM há pouca aceitação. Se você quiser apenas programar o hardware do MS, vá em frente, mas não vejo isso como uma abordagem sólida da ciência da computação.
  • Não sou muito fã de aprender a programar com idiomas gerenciados. Acredito que seu valor é aprender a gerenciar a memória de um programa e a construção de estruturas de dados.

Cansado demais para continuar, escolha rapidamente outro idioma.


Entendo se você acha que amarrar-se à EM seria ruim para sua carreira. Mas o que isso tem a ver com o aprendizado da ciência da computação? O CS não tem nada a ver com plataformas ou corporações.
svick

-3

Eu recomendaria C # ou qualquer idioma que ofereça essas três coisas em sua essência:

Totalmente digitado Compilado e totalmente orientado a objeto.

Uma primeira linguagem que oferece esses três núcleos ensinará muito sobre o fluxo do programa, sintaxe e como resolver problemas de maneira mais estruturada. Eu vivo e respiro dentro de um monte de ótimas línguas que não têm esses atributos, mas se eu estivesse ensinando uma língua para alguém, escolheria uma que tivesse esses três requisitos.


-6

Não, essa resposta é terrível. Por quê? Bem, ele prescreve alguns bons livros que você deve ler, mas sem o trabalho em sala de aula e o laboratório (laboratório de informática), você ficará perdido e frustrado. Você precisa estar com vários outros novos programadores fazendo experiências, porque há muito a aprender além do que está nesses livros. Não estou dizendo que você precisa procurar um BSCS, mas também precisa de um instrutor experiente quando várias coisas podem dar errado a qualquer instante, como problemas no compilador, ambientes de construção ... o nome dele. Você não será muito programador trabalhando no vácuo. Quaisquer livros que seus cursos requeiram serão bons o suficiente, desde que você escolha uma escola decente.

Portanto, inscreva-se em algumas aulas e será muito mais divertido! Além disso, se você planeja conseguir um emprego como programador, precisa de conexões e ouvirá todo o burburinho sobre empresas recrutando no campus, etc.

Finalmente, a educação formal é muito importante, pois a programação requer muito conhecimento teórico para entender como as coisas devem funcionar em todos os níveis (hw / sw), para que você possa descobrir como consertar as coisas. Quase tudo é uma caixa preta, então você deve ser capaz de descobrir por que algo está se comportando da maneira que está, para que você possa dar a próxima facada lógica no escuro. Sem pelo menos um diploma de programação de dois anos (o que você chamar), você estará em desvantagem.

PS: Eu não chegaria perto de .Net ou C # até você experimentar o Java. C # não é agradável aos olhos. É um código confuso e bagunçado. O .Net IDE é péssimo além da crença. Está na idade das trevas dos padrões IDE. Java: C # ~ Dados: Conhecimento


10
Estou com você até o último parágrafo. Ele afirma sua opinião sobre a estética do C # de maneira tão inflamatória que simplesmente não parece pertencer a uma resposta boa.
Adam Lear

9
Mesmo antes do último parágrafo, isso não faz sentido. Algumas pessoas aprendem bem em um ambiente de sala de aula - mas, para outras, é uma total perda de tempo. Aprender os antecedentes teóricos é importante, mas isso também não requer necessariamente uma sala de aula ou educação formal - eles ajudam algumas pessoas, mas não (nem perto) de todo mundo.
Jerry Coffin

Uma opinião é apenas isso; não é uma declaração de fato. Portanto, não se sinta ofendido.
Tom Jones

Você entendeu mal a recomendação para a educação formal. Você precisa de um lugar para fazer perguntas e colaborar com seus colegas no laboratório. Colaboração é o conceito chave. Desculpe se você é um usuário de C # e eu o ofendi, mesmo que isso seja impossível entre os técnicos desapaixonados.
Tom Jones

1
O Stackoverflow se tornou esse "laboratório" para muitas pessoas que não podem ir para a faculdade, mas querem apoio da comunidade. É o mesmo que uma classe? Claro que não. Isso é bom o suficiente? Pode apostar.
BlackJack 12/08
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.