Fazer compiladores mais inteligentes, linguagens e frameworks fazer programadores mais burro? [fechadas]

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

  •  06-07-2019
  •  | 
  •  

Pergunta

As mais e mais avançados compiladores, linguagens e frameworks temos que ou tarefas Automatizar ou ocultar determinados meandros de nós, eles, finalmente, fazer-nos programadores mais burro?

Jim C dá a seguinte analogia de uma calculadora:

Qualquer um extrair uma raiz quadrada ultimamente, usando papel e lápis? Nós usamos um calculadora ou simples chamada uma função na nossa linguagem de programação favorita. Como muitos de nós sabemos o que a calculadora faz ou mesmo a função?

Então, por que não nós todos apenas dizer aos nossos filhos para esquecer de matemática aprendizagem, que é o que temos calculadoras para? Não que inerentemente fazer nossas crianças mais burro?

Foi útil?

Solução

Eles não fazem bons programadores mais burro, eles torná-los mais produtivos; mas eles fazem as pessoas mais mudos ser capaz de programa e acho que eles são grandes programadores.

Esclarecimento: eu não tenho uma definição precisa para ser burro. Desde que eu mudo significa uma coisa geral que é que as pessoas que não deveriam estar realmente programadores ou deve tentar aprender coisas importantes. Tenho visto muitas pessoas que não podem realmente código e simplesmente copiar coisas de aqui e ali. avaliação da qualidade de software não é uma coisa fácil. Eles finalmente construir um software de baixa qualidade que funciona de alguma forma (devido à existência de boas ferramentas) para que eles não percam seus empregos e eles pensam que são bons programadores e, portanto, nunca deve tentar aprender alguma coisa. Acredite em mim, há uma coisa que eu já vi em toda boa desenvolvedor: "Eles aprendizagem nunca parada, e eles não vão aprender apenas o pedaço de código que eles precisam para completar o seu trabalho." Aquelas pessoas que eu falei nunca tente aprender alguma coisa além do que eles precisam e grandes ferramentas reduzir esta "necessidade".

não Isso faz IDEs médios são ruins. Eu os amo e acho que eles devem ser desenvolvidos, tanto quanto possível.

Outras dicas

Eu acho que eles permitem que os programadores mais muda, eles não fazem programadores mais mudos.

Os agricultores mais mudos porque eles usam máquinas automatizadas para plantar, colher e manter culturas?

Boa automação de tarefas simplesmente faz programadores mais eficaz, não mais burro.

Então, por que não nós todos apenas dizer aos nossos filhos para esquecer de matemática aprendizagem, que é o que temos calculadoras para? Não que inerentemente fazer nossas crianças mais burro?

A calculadora é uma ferramenta que permite que você executar determinadas tarefas. Claro que você pode fazer matemática complexa e integração de múltiplas variáveis, mas sem aprender matemática, como é que você sabe que você precisa para executar essa tarefa em um determinado momento?

A mesma coisa com a programação e SDKs, você pode jogar em um monte de sinos e assobios usando o código pré-definido, mas quando chega a hora que você precisa escrever algo para resolver um problema, todas as ferramentas e automação no won mundo' t ajudá-lo lá (AI não é tão avançado mas de qualquer maneira;)

.

Em média , sim. :)

Eles não fazem nós programadores mais mudos. O que eles fazem é permitir que haja programadores mais mudos (que suponho que significa que, em média, somos mais burro.) Ter melhores ferramentas significa que alguém com pouca experiência e uma compreensão sombra dos conceitos de CS pode ainda acionar a código que eventualmente, trabalha e faz algo útil. Isso não é possível quando se escreve na montagem, mas é quando se escreve em, digamos, VB. (Claro, há uma maior chance de eventuais catástrofes de estilo WTF quando uma pessoa menos experiente está escrevendo grandes aplicativos que eventualmente entrar em colapso sob o peso de sua má arquitetura.)

Na verdade, "burro" é uma palavra inflamatória para usar aqui. Só porque alguém sabe menos não os torna estúpido, isso apenas significa que eles são menos experientes. Mas o ponto é compreendido.

Eu acho que mais rápidas máquinas Faça programadores pior .... nos dias de hoje a maioria dos programadores gastam muito pouco código de escrita óptimo tempo. Compiladores não pode otimizar código ruim em código bom.

máquinas rápidas significa que os programadores ruins podem fugir com código ruim porque ninguém sabe seu mau. Nos velhos tempos código tinha que ser trabalhado e refinado para que ele iria correr rápido o suficiente para realmente trabalhar em uma forma aceitável.

Tony

Não,

compiladores inteligentes deixar os programadores inteligentes concentrar em coisas que realmente mater, como projetar um bom software.

s/make/allow/

Sendo um pouco simplista menos: Eles são ferramentas. Ferramentas não fazem nada, e eles não fazem qualquer artesão melhor ou pior. ferramentas poderosas não quer -. eles simplesmente agir como uma alavanca, ampliando a competência de um determinado artesão (ou falta dela)

Algumas ferramentas de programação ter tido o efeito de reduzir as barreiras à entrada, se não para a profissão de engenharia de software, então, pelo menos para a obtenção de um aplicativo em execução. Encurtando a quantidade de pensamento que tem de ir para produzir um trabalho (ou "trabalho") cortes de aplicativos para os dois lados: especialistas competentes são liberados do trabalho SCUT e pode fazer grandes coisas, mas os novatos desajeitados às vezes vai ter um código ruim em produção que eles nunca teria chegado a trabalhar sem as ferramentas "inteligentes". O último efeito provavelmente teve um impacto maior do que o anterior em moldar a reputação de BASIC, VB, PHP, e a recente onda de frameworks de desenvolvimento rápido MVC para a web - e de fato sobre a noção de tais ferramentas em geral.

Por mais inteligente você quer dizer automatizada . Fazendo um trabalho repetitivo não faz ninguém mais inteligente, então a resposta é não .

Deixe-me expandir, usando o exemplo da calculadora. A técnica para calcular uma raiz quadrada com caneta e papel é meramente um processo que pode ser aprendido. Não faz você mais inteligente para conhecer esse processo, ele só permite calcular raízes quadradas, na ausência de uma calculadora.

Agora, se você descoberto um algoritmo para calcular raízes quadradas, agora que faz você inteligente.

A mesma coisa com as nossas ferramentas de programação. A linguagem que faz o gerenciamento de memória para você não fazer você estúpido, nem ser capaz de fazer o gerenciamento de memória por si mesmo faz você mais inteligente.

Ela torna mais fácil para menos programadores qualificados para entrar no campo, é tudo. Não faz um mais burro bom programador. Eles seriam burros se ignorado ferramentas que poderiam potencialmente aumentar a sua eficiência.

Os computadores estão reforçando dispositivos. Então mudo tornar mais burro e inteligente se tornar mais inteligente.

Só se você permitir-lhes.

Se você aprendeu em algo duro e meticuloso (como o meu laptop Tandy 102), você ainda acha que nesse modo, mesmo com ferramentas mais inteligentes.

Certamente é fácil de contar com as ferramentas para fazer seu trabalho, e para um monte de que, eu sou grato.

Por exemplo, você não ensinar as pessoas a fazer tratamento de madeira com tabela serras e furadeiras - você começa com serras manuais e brocas ou brocas de mão pequenas. Dessa forma, quando você se move para ferramentas de poder, você não fazer algo estúpido (tm).

Baseando-se a ferramenta é grande -. Mas saber como fazê-lo sem a ferramenta é importante, também

Não, mas faz por melhores programas e código.

Eu diria que as habilidades são diferentes em linguagens de alto nível, você precisa pensar em abstrações muito mais, há muito mais APIs que se preocupar e as pessoas esperam que um maior nível de qualidade no seu software. Como resultado do acima exposto um programador enfrenta diferentes desafios e as ferramentas estão acompanhando esses desafios.

Eles não necessariamente programadores mais mudos, mas eles podem fazer programadores preguiçoso. Eu encontrei-me fazendo isso por vezes, apenas correndo através de algum código e contando com o compilador para me ajudar a encontrar todos os meus erros, em vez de fazê-lo direito, em primeiro lugar.

Pela forma como este não é a maneira recomendada de fazer as coisas. Ele normalmente leva muito mais tempo.

Ok, os dois primeiros computadores que eu possuía, eu me construiu. Isso foi inteligente, então, eu não estou tão certo de que seria um bom uso do meu tempo agora. I programado em uma mistura de assembler e BASIC no início dos anos 80, mais uma vez inteligente, então, não tão esperto agora.

O que eu estou chegando aqui é que o contexto mudou, e no cálculo tivemos de profundidade troca de knowldge para amplitude de knowldge, com o necessário 'emburrecimento' que isso implica. A fim de apoiar a complexidade enorme e amplitude de aplicações cobertos por 'hoje computação', também são forçados a trabalhar em níveis muito mais altos de abstração. Por um lado, vemos especialistas em aplicações de domínio usando ferramentas altamente abstraídos para fornecer soluções muito boas, e, por outro lado, vemos a tecnologia de computação / peritos programação produzir código soberba que tem a capacidade de trazer a indústria de computação todo para a frente. Chamando cada lado mudo é inflamatória, e provavelmente o bit somente mudo no debate.

emburrecimento neste contexto é meramente permitindo um maior público fazer uso das ferramentas eficazes que os computadores modernos são. Isso é uma coisa boa, e os programadores do núcleo duro não deve se sentir ameaçado por ele, afinal, é seu bebê.

Em média, sim eles fazem programadores mais burro. Mas isso é só porque eles tornar a programação mais acessível para as pessoas que não são tão inteligentes quanto nós, o que reduz a média "esperteza".

: -)

Um programador inteligente, que denuncia a conveniência de ambientes de desenvolvimento modernos provavelmente não é realmente tudo o que inteligente.

Dumber? Não necessariamente. Como já foi dito antes, ter ferramentas mais inteligentes permite que o desenvolvedor se concentrar em coisas mais importantes, como fazer a função do aplicativo corretamente. A anedota relevante da minha própria carreira:

Eu não sou um matemático habilidoso. I foi reprovado fora do pré-cálculo (ok, concedido, foi porque eu nunca fiz a minha casa) e estou mesmo um pouco enferrujado em algumas fórmulas realmente básicas da física (cálculo de atrito, por exemplo). Isso é porque eu sou disparately fora da prática, que é simplesmente porque eu nunca usá-lo.

Tomemos, por exemplo, o derivado. Se você me pediu para encontrar a derivada de uma função, eu iria chegar para o meu TI-89, porque eu não tenho o indício mais confusas como fazer isso. No entanto - e eu afirmo que isso é mais importante - eu sei como usá-lo. Eu sei onde é útil, por que ele deve ser usado, etc. O produto escalar é um outro exemplo. Eu sei como usá-lo para calcular a especular de uma superfície no espaço 3D, mas eu não sei como calcular a mão, porque eu nunca precisa.

Eu não me chamo mais burro para ele. Fora da prática talvez, mas tão capazes.

Não, é algo semelhante ao esteróides (e outras drogas para melhorar o desempenho) - eles fazem um grande atleta ainda melhor, mas eles não podem fazer alguém como eu correr 100m em 10s mesmo que eu comi uma farmácia inteira de drogas. Então, IDE deus, língua ou quadro pode fazer de você um programador melhor, mas se você está contando apenas com ele para fazer o trabalho, você está em apuros.

Eu não acho, mas há muitas pessoas (os muito sábios) que pensa diferente

Eu realmente recomendo esta palestra, é uma opinião muito interessante e muito bom ensaio

Eu não penso assim. ferramentas mais sofisticadas apenas liberta nossas mentes se concentrar em problemas mais interessantes.

Para aqueles de nós que aprenderam a fazer essas tarefas ou aprendeu sobre disse meandros no passado, eu acredito que ele só nos torna mais eficiente. Nós somos mais livres para se preocupar com outras coisas / mais importantes. Podemos tendem a quer esquecer "o quão difícil era naquela época" ou reclamar o quão sortudo novos programadores são hoje.

Para aqueles de nós que estão apenas começando e não aprenderam tais detalhes, acredito que simplesmente nos uma raça diferente faz. Não mais burro, só que olhamos para diferentes problemas na luz diferente.

É, no entanto, diminuir a barreira de entrada, e, portanto, está a fazer a programação mais acessível às massas. Se isso é um bom ou mau coisa é discutível.

Sim, mas isso não importa. Qualquer um extrair uma raiz quadrada ultimamente, usando papel e lápis? Nós usamos uma calculadora ou simples chamada uma função na nossa linguagem de programação favorita. Quantos de nós sabe o que a calculadora faz ou mesmo a função?

Você deve saber como as coisas funcionam, O melhor programador, ou qualquer outra coisa, você quer ser, mais você deve saber. Mas existem apenas tantas horas em dia.

Melhores ferramentas de nos fazer melhor. O trade off é que perdemos pouco controle sobre o processo.

De uma maneira

Por exemplo, eu não sabe nem quer saber como escrever sobrecargas de operador porque eu tenho as ferramentas que eles fazem para mim. Eu não tenho que me lembro como P / invoke obras porque uma ferramenta que tenho seria automaticamente criar um C ++ dll projeto, e uma [DllImport] no meu projeto C #. Eu não tenho que escrever um auto-atualizador para o meu projeto porque ClickOnce é muito bonito isso. (E eu não tenho idéia de como ele funciona 'sob a capa'.)

Então, sim, eu sou menos inteligente, porque eu não tenho nenhuma pista sobre um monte de coisas de baixo nível que C ++ saber programador. Mas eu ainda acho que eu estou do lado dos vencedores, porque eu posso fazer mais. Eu posso passar mais tempo na apresentação, controle de qualidade e as características que os clientes realmente querem ter. Além disso, cavando no fundo do framework .NET requer algum aprendizado, por isso é um pouco de um trade-off.

Eu não diria que eles fazem programadores mais burro necessariamente, mas o que eu diria que é isso. Para as pessoas começando no desenvolvimento nos dias de hoje e idade, não têm uma apreciação completa para apenas quanta coisa está acontecendo nos bastidores que está sendo feito para nós. Há tantas bibliotecas construídas nas plataformas nos dias de hoje, que as pessoas começando hoje não têm noção de como tudo isso tinha que ser feito à mão em um ponto ou outro.

Eu vou dizer no entanto, eu nunca pode voltar a escrever uma única linha de código sem Intellisense:)

Eu acho que é necessário ter ferramentas mais inteligentes para que possamos ter camadas de abstração da complexidade. Mas eu acho que devemos ser capazes de mudar têm acesso a essas camadas de abstrações. Eu acho que os programadores vão ser mais produtivo, mas facilmente vai perder a noção de muitos conceitos básicos. É um fora de comércio ... Os bons programadores serão os únicos que continuam a compreender os conceitos básicos de programação. Os outros serão "copiar e colar" 's e os jogadores de Lego.

Ao contrário, compiladores mais inteligentes significa que você está lutando com o computador menos e começar a dar mais pensado sobre como você está tentando fazer alguma coisa.

Se você está lutando com assembler você quase nunca vai se preocupar com métodos anônimos.

Eu diria que não.

sistemas de programação mais inteligentes (estou pensando níveis mais altos de abstração não coisas como ferramentas que automaticamente corrigir o seu código) IMNSHO são realmente mais difícil de usar. A analogia que eu vim com é que eles agem como uma alavanca longa; você empurra realmente duro na extremidade curta, movê-lo uma pequena quantidade e enormes mudanças acontecem.

É mais difícil descobrir o que precisa ser feito, mas é também muito mais difícil de mexer-se quando você finalmente fazê-lo.

línguas mais inteligentes, compiladores e estruturas de tornar a programação possível. Quero dizer, você pode imaginar o estado da programação se ainda estávamos restritos ao uso de linguagem Assembly? Heck, nada disso. Você poderia imaginar o estado da programação se estivéssemos restrita a C ou C ++?

As melhorias na compiladores, linguagens e frameworks faz programadores mais eficaz, assumindo que eles têm uma sólida formação acadêmica ou boa compreensão semântica.

Eu sei que esta é uma discussão antiga, mas ainda gostaria de jogar minha opinião aqui ...

Eles nos fazem mais burro, a maioria de vocês pessoas aqui que já reagem sabe como programar de uma forma decente. E porque? Porque você vem de uma era que os quadros foram utilizados quase.

No sistema de ensino mais e mais estruturas são utilizados nas aulas, ... e em aulas onde nenhum quadro é usado, não é encorajador para iniciar a programação. Saiba todo este código, enquanto que na parte de trás de sua cabeça você sabe que há uma ferramenta que faz tudo para você. Você sabe no campo / workfloor você tem que usar os quadros para ir mais rápido. Então, por que gastar todo esse tempo aprendendo o código.

SO: No curto prazo, para todas as pessoas já sabendo as línguas, não ... isso não faz de você mais burro

No longo prazo .... você verá os programadores de baixa LVLD se tornar melhor e os bons programadores tornar-se pior no lvl.

Marque minhas palavras!

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