Eu ouço sobre C, C ++, Java todos os dias sempre que as pessoas começam a falar sobre ciência da computação, mas na minha primeira aula de ciência da computação nos pedem para escrever em Scheme (DrRacket).
Por que é que?
Que diferenças isso fará no meu futuro entendimento da programação?
ATUALIZAÇÃO: Eu terminei meu primeiro mandato, mas ainda não o concluí completamente. No meu segundo mandato (que é agora), entramos na programação C. Foi frustrante aprender dicas a princípio, mas agora me sinto muito melhor.
Não há muito mais a dizer do que isso. Estou tentando me ensinar Java (ou C ++?) Para a parte OOP que estou perdendo. Até agora, ainda gosto mais da programação funcional. Lambda é simplesmente fascinante. :)
Respostas:
Parece uma ótima escola! Os dialetos Lisp seguem o paradigma matemático dos algoritmos muito mais de perto. Eles forçam os programadores a aprender a recursão e o estilo funcional. Esta é uma excelente experiência. Sua escola está no ranking do MIT, que ainda usa Abelson e Sussman para o CS 6.001 exigido.
Você pode achar este artigo encorajador e útil para entender o problema.
fonte
Ninguém espera que, como calouro, você seja proficiente o suficiente em qualquer idioma para conseguir um emprego de verdade; então, por que não começar com um que seja fácil de aprender? Esperar que os novatos aprendam a programar usando uma linguagem profissional em um IDE profissional é como dar um bisturi a um estudante de medicina do primeiro ano e tê-lo trabalhando em corpos vivos.
Não se preocupe; você acabará aprendendo Java / C / C ++, provavelmente iniciando seu segundo ano. Se você começou a aprender Java 6 agora, quando você se formar, o Java 8 estará pronto. Ou será substituído pelo Python. Ou alguma outra linguagem que ainda não foi inventada, mas que arrasa a indústria. É melhor adiar o aprendizado das coisas "populares" o máximo de tempo possível, para que não fique obsoleto quando você entrar na força de trabalho.
O esquema / raquete ajudará você a se concentrar nos conceitos importantes: design de algoritmo, estruturas de dados e manipulação de informações. Você sabe, as coisas comuns a todos os idiomas.
fonte
Parabéns, agora você está se transformando no equivalente a um vegano no mundo da computação e, em dois anos, não será capaz de terminar nenhuma discussão sem informar as pessoas sobre o fundamento moral mais elevado em que se coloca. ;)
De qualquer forma, você conseguiu uma escola muito boa. Escolas que não são chicoteadas pela indústria são boas.
Como alguém disse, eles ensinam a ciência, da qual você obtém a arte .
Muitas fazendas de macacos-código ruins ensinam a você o ofício, e então você pode inferir a ciência a partir dele, mas não é garantido. (e você pode terminar com conceitos equivocados bastante estranhos)
De qualquer forma, como um membro honrado da multidão funcional, quando você sai de lá, sempre se sente incompreendido e subestimado .
O que, vamos admitir, para o especialista em informática médio não é novidade.
Você está agora com um alto risco de:
Você provavelmente também gostará de código aberto, mas nunca encontrará colaboradores suficientes para seus projetos funcionais.
fonte
É como perguntar como ler Shakespeare o ajudará a escrever artigos. Programar (em qualquer idioma) é apenas um meio de expressar suas idéias de forma executável. A ciência da computação fornece os blocos de construção conceituais que lhe darão algo interessante a dizer. A sintaxe do esquema é relativamente simples, para que você possa obter idéias interessantes rapidamente e sem encontrar muitos erros de compilador, bibliotecas padrão etc.
Preste muita atenção na aula - você aprenderá muitas coisas interessantes neste semestre.
fonte
Parece que você é muito novo em programação e não tem nenhuma experiência prévia. Então, aqui estão alguns esclarecimentos:
Por que esquema e não C / C ++ / Java ...?
Ao aprender uma linguagem de programação (uma analogia pode ser feita com o idioma inglês), você aprende a sintaxe que precisa seguir para que seu código esteja gramaticalmente correto. No entanto, um idioma não ensina a lógica por trás da solução de problemas. Para aprender essa lógica, você aprende diferentes paradigmas de programação .
Cada idioma pode implementar (com mais ou menos precisão) um ou mais paradigmas. Um paradigma é uma maneira de estruturar sua lógica, e o paradigma implementado pelo Scheme é chamado de Programação Funcional (FP).
Então, a verdadeira pergunta que você está fazendo é: Por que FP?
Como você mencionou, C, C ++ e Java (que não implementam FP) são muito mais populares. Por uma questão de fatos, (e por várias razões, todos têm sua opinião) FP não é muito popular na indústria.
Por outro lado, o FP é altamente considerado nos círculos acadêmicos. Está mais próximo da abordagem matemática comum, concentra-se mais na provabilidade e otimização de algoritmos, e a maioria das pessoas concorda que isso faria de você um programador melhor em geral.
É semelhante às escolas que ensinam latim para estudar literatura de inglês.
fonte
Você deve aprender como a programação está sendo feita e quais são os conceitos básicos. As linguagens cotidianas usadas na maioria das empresas podem ser adequadas para produzir o software necessário hoje, mas não são necessariamente as mais adequadas para ensinar a você os fundamentos da programação.
Depois de entender os conceitos, é fácil aplicá-los a outros idiomas.
fonte
Se você está aprendendo com o DrRacket, aposto que você também está usando o currículo Como criar programas.
Aqui está o que um dos autores (reconhecidamente tendenciosos) do HtDP tem a dizer sobre como o Scheme de ensino preparou estudantes de graduação da Northeastern University para o programa de educação cooperativa ("cooperativa": estudantes alternam semestres de estudos acadêmicos com semestres de período integral emprego).
Editar: para aqueles muito interessados no racional por trás do currículo, aqui está a explicação do arquiteto principal - http://www.youtube.com/watch?v=m3be1PHW5X0
fonte
Minha escola também começou com Scheme. Um dos motivos mencionados foi que isso ajudou a nivelar o campo de jogo. A maioria dos Sci do primeiro ano pode ter alguma ou muita exposição a idiomas mais comuns. Era menos provável que qualquer pessoa tivesse muito conhecimento de Scheme.
fonte
Na verdade, como Lisp (Scheme sendo um dialeto) é a Grande Dama das linguagens funcionais (pense em F #, Groovy, Clojure, Haskell etc.), esse treinamento também não deixa em desvantagem comercial, pois é o mais quente tópico no bloco de desenvolvimento agora.
fonte
O esquema o ajudará a melhorar e a pensar da maneira correta para usar linguagens de programação funcionais. Scala, por exemplo, é um híbrido Functional / OO bastante brilhante, embora um pouco denso. Idiomas como este marcam o futuro - espero.
As linguagens do tipo Lisp, embora tenham pureza e simplicidade no design, facilitam um pouco o ensino. O bom benefício, porém, é que você terá muito mais facilidade para aprender algo como Scala posteriormente.
fonte
Concluímos o esquema no primeiro e no primeiro semestre do segundo semestre. Foi só quando começamos a trabalhar com C que comecei a perceber o poder do Scheme.
Quanto à sua pergunta, por que o Scheme foi escolhido: a resposta é que ele é um dos idiomas mais simples do mercado e permite que você faça muito (principalmente quando começarmos a brincar com listas preguiçosas posteriormente). Além disso:
fonte