Bons programadores não programam em Python… nem em Ruby, nem em PHP, nem em JavaScript, nem em…
1 2 3 4 5 | #PHP VS JAVA //JAVA VS PYTHON /*C++ VS JAVA*/ 'JAVA VS .NET out.println("EU NAO SEI PROGRAMAR NADA!"); |
Eu tenho um amigo que é apaixonado por Python. Ele é muito gente boa e muito querido por mim e pela minha esposa e até é importante nos meios da comunidade Python. Mas se fosse apenas por ser nerd e gostar de Python provavelmente ele não me chamaria a atenção. Fato que gosto de conversar com ele e sua esposa sobre política, sobre economia, sobre trabalho e principalmente tudo sobre jogos. Jogos, sim, claro, ele é amante de jogos de tabuleiro e tem na casa dele uma estante recheada de jogos importados, uma pessoa destas pode ser uma má pessoa? A resposta é não =)
Mas voltando ao assunto original, ele defende muito Python e por 3X eu tentei aprender esta linguagem por conta das alfinetadas que ele dá. Mas não dá, simplesmente não dá. Não desce. Certa vez ele disse que foi a 1ª linguagem que aprendi foi Java e por isto eu não gosto de Python. Errado. A primeria linguagem que aprendi foi linguagem BAT do MS-DOS, depois foi Visual Basic, VBA, C++ e só então Java.
Então em outro momento ele disse “ah mas foi porque foi a última e você não teve mais paciência para aprender outras linguagens”. Errado também! Depois de Java eu ainda aprendi C#, PHP, lotus script e cold fusion. E coloco o Python em igualdade do cold-fusion em linguagens que não me descem a garganta.
Sei que vai ter muitos trolls que vão vir aqui pra me encher o saco, mas foda-se. Odeio Python. Se preciso, dou suporte (como já cansei de dar suporte na comunidade de L2J).
Aliás bem lembrado, a comunidade L2J começou a fazer scripts para quests em Python e terminou que ninguém conseguia dar suporte neles de tão mal escritos e confusos. Resultado? Todo script novo agora é em Java e muitos dos antigos foram convertidos para Java. Se Python fosse bom e fácil aparecia gente interessada em dar suporte. E até hoje tem vários scripts bugados em python no L2J que de tempos em tempos um programador Java refaz o código, pois os programadores de python mexem, mexem e a coisa toda continua porca. (para quem não sabe L2J é um projeto open source).
Mas ok, quais os argumentos? Dizer que uma comunidade migrou de python para java não é argumento, pois outras comunidades podem ter feito o contrário. Também não se pode jogar que linguagens scripts não são sérias devido apenas python. Tem o PHP por exemplo. Então vamos à eles:
Abertura de Código:
Linguagens scripts exigem que o código seja aberto, afinal se não for aberto e sim compilado deixa de ser scripts. Muitas vezes ser aberto inviabiliza modelos de negócios. Exemplo que posso citar são jogos. Muitos jogos sobrevivem com o fechamento do código, seja para impedir que o jogador roube (em modo multiplayer) ou para impedir que o jogo seja alterado (devido a direito autorais).
Outra situação é quando o cliente não confia onde vai ficar o código, afinal, nem sempre o código fonte fica onde o cliente confia. Então bibliotecas de conexões a bancos são criadas para que ninguém enxergue senhas e dados mais pessoais. Esta não é a saída mais elegante mas é a mais aceita se visualizar a quantidade de projetos onde o segredo fica oculto na forma de linguagem de máquina, para projetos baratos as vezes é o suficiente.
Claro que existem outras situações onde manter o código compilado seja o ideal, como manter segredos de algorítimos complexos que levaram anos de pesquisa etc., mas queria apenas demonstrar que existem motivos. Mesmo que existam formas caras de contorná-los eles não deixam de ser motivos.
Variáveis:
Para mim, linguagens sérias exigem que seja declarado variáveis (tipagem estática) e de preferência exija conversão (tipagem forte). No PHP você não é obrigado a declarar a variável e nem recebe um erro caso ela seja usada e ainda esteja nula. Da mesma forma no JavaScript (embora em casos raros ele reclame). Situações como estas podem levar o programador ao seguinte erro:
1 2 3 4 5 6 7 | adminCount = getAdminCount(); (...) if(admCount > 0) { //remove deslogados admCount = admCount - getAdminLogoutCount(); } |
No exemplo acima, ele inicia a variável adminCount com a quantidade de administradors logados, e por um erro de digitação ele jamais entra no if onde atualizaria a variável que conta admins logados. Outro exemplo ainda pior é:
1 2 3 4 5 6 | var noHaveAdminAcess = getAccessUser(); if(noHaveAdminAces == 1) { //habilita acesso de admin, pois não foi bloqueado o acesso de admin (...) } |
No exemplo acima, um código pode levar a liberar acessos proibitivos no sistema, apenas porque a variável em script foi declarada e iniciada automaticamente com zero. Outros erros podem fazer o programador perder horas valiosas do dia dele tentando descobrir a encrenca. Alguns scripts trazem a possibilidade de configurar isto, mas se o padrão é permissivo já é um erro! Por quê? Porque você depende da boa fé de que o servidor vai ter esta possibilidade de configuração, coisa que qualquer programador sabe que não funciona bem assim.
No Python (e acredito que em Ruby) e em outras linguagens mais novas, eles pegam um terceiro caminho. Você não é obrigado a declarar, mas é obrigado a dar um valor para ela antes de acessá-la. Resolve metade dos problemas, mas ainda leva os programadores ao erro. Esta situação pode levar a seguinte encrenca:
1 2 3 4 5 6 7 8 9 10 11 12 13 | noHaveAdminAccess = 0; //tem acesso de admin (...) if(userBanned ==1) { noHaveAdminAces = 1; //usuario banido remove o acesso de admin } (...) if(noHaveAdminAccess == 1) { //habilita acesso de admin, pois não foi bloqueado o acesso de admin (...) } |
Se reparar, inicialmente o usuário tem acesso de admin. Por conta de um erro, quando o usuário tem o status banido ele não remove o acesso de admin, no lugar disso ele cria uma nova variável com valor 1, valor que jamais vai ser lido (ou até pode ser lido se o erro ocorrer em outros lugares), causando uma tremenda falha de segurança e confusão.
São exemplos bestas, que criei de cabeça mas já passei por alguns casos, já tive que corrigir muita cagada em scripts por conta destas falhas de linguagem e me aborrece muito quando alguém vem defender linguagens scripts contra linguagens robustas como C, C++, Java e C#. Ai você pode dizer “Ah mas se programar direito não acontece isto!”, ok mas se a linguagem favorece programadores preguiçosos, que tipo de código você acha que vai cair nas tuas mãos pra arrumar?
Blocos de comandos não obrigatórios
Linguagens scripts costumam ignorar o fechamento de blocos, no caso de JScript e PHP se não me engano ambos permitem ignorar os últimos “fechas” de bloco. Tornando assim um perigo, pois se existe a falta de “}” nada garante que não esteja faltando mais coisas, ou elas não estejam tremendamente erradas.
Novamente o Python pega um terceiro caminho, no entanto outra vez ele só cria um novo caminho que na minha opinião mais atrapalha que ajuda. Para definir blocos ele usa apenas identação. Soa lindo na teoria mas uma merda na prática pois na teoria visualmente teria o mesmo efeito, um código:
1 2 3 4 | if(cont==1) { (...)bloco de comandos } |
seria aceito em linguagens que exigem apenas identação, ficando apenas assim:
1 2 | if(cont==1) (...)bloco de comandos |
Parece ótimo não precisar digitar os braços (ô preguiça) mas eu (opinião pessoal minha), acho extremamente deselegante depender do editor de texto, espaços e tabs pra marcar algo tão sólido como um bloco de códigos numa estrutura condicional.
Aliás da mesma maneira ele não tem terminador de linha “;” por exemplo, mas ai acho que a quebra de linha cumpre bem o papel visual.
Tipologia
OO que me perdoe, mas se tu quer desenvolver em OO puro, por favor use Smaltak. Tipologia de variáveis existem, não por acaso. Estão aí para garantir que o código será escrito sem erros. A maioria esmagadora dos scripts não exigem definição de tipos, e ai começa a encrenca:
1 2 3 4 5 6 | havePermission = "false"; if(havePermission) { (...)//libera permissão } |
O exemplo acima é apenas “um exemplo”. Existem outros, mas é apenas para demonstrar como podem ocorrer falhas de codificação esperando que o conteúdo seja um tipo e na realidade é outro.
A exigência de tipos causa um erro de compilação*, avisando ao programador que ele cometeu um engano, ou ele usou a variável errada ou esperou que a variável contivesse um tipo de valor (boleano no exemplo) e na realidade tem outro. Este tipo de coisa salva o programador de erros no futuro, e como tudo que pode ser deixado para depois, este erro pode causar desastres lá adiante.
*dependendo do editor, até um erro de edição. Porém como não podemos contar com o editor, o compilador segura as pontas.
Olha como sou bom programador, tudo que faço compila!
Não irei citar aqui todos os casos, mas é fácil notar que linguagens scripts têm o intuito de acelerar a produção do código, nem que deixe passar alguns erros que estourem lá adiante. Esta aí algo que não curto, pois é o efeito borboleta passando propositalmente debaixo do nariz do programador. O erro vai passando pra ser resolvido depois, mas o depois não se sabe quem irá receber a bomba, talvez não seja você, ou talvez você não se lembre mais do que programou há um ano atrás. E aí você se mata em procurar o erro que poderia ter sido evitado já em tempo de compilação, ocasionando maior gasto para a empresa e para o programador.
Teve um sujeito que chegou para mim e disse “poxa você deveria fazer o site do Taulukko em Ruby, teria ficado bem melhor”. É como o líder do L2J falou uma vez que alguém disse o mesmo para ele a respeito de não ter feito a engine em C++ pela velocidade, “existe algum projeto em C++ para emular L2 que vingou ? Não né?” Mesma coisa. Meu servidor nem tem suporte a Ruby, eu não tenho conhecimento profundo na linguagem Ruby como tenho em Java, tenho centenas de bibliotecas e códigos prontos em Java, e o cara me fala que teria sido melhor se eu tivesse feito em Ruby? São pensamentos pequenos como estes que me fizeram criar este post. Eu não chego e falo que o Twitter teria menos baleias se fosse feito em Java, falo? Pronto falei!
Apesar disso respeito muito Ruby pois dentre as linguagens scripts é na minha opinião a mais fácil de achar erros e corrigir problemas. Mas também não trabalhei nela a fundo para poder levantar seus defuntos, mas conheço alguns dos seus defeitos, como no exemplo abaixo que é o slogan do site do Ruby:
1 2 3 4 5 6 7 8 9 10 11 | cidades = %w[ Londres Oslo Paris Amsterdão Berlim ] visitadas = %w[Berlim Oslo] puts "Ainda me falta " + "visitar " + "as cidades:", cidades - visitadas |
Onde você tem duas listas subtraindo uma da outra. Então você acredita que vai dar um erro? Errado, se você acha que vai dar a diferença de quantidade das duas listas? Errado de novo, ela exibe os nomes das cidades não visitadas, separadas com quê? Pois é… Se fosse uma linguagem menos preocupada com o desenvolvedor e mais com a consistência seria algo como:
1 2 3 4 5 6 7 | String cidades [] = { "Londres", "Oslo", "Paris", "Amsterdão", "Berlim" }; String visitadas [] = {"Berlim", "Oslo"}; pront( "Ainda me falta " + "visitar " + "as cidades:", EString.join(cidades.remove(visitadas),",") ); |
Onde o remove fica óbvio que está removendo os elementos da lista visitadas, e o join deixa óbvio que está transformando a lista num objeto string só separado por vírgula.
Leeento
Eu acho que reclamar de lentidão é a coisa mais baixa que um programador pode fazer ao reclamar de alguma linguagem. Desde a criação do PC os processadores não param de acelerar a cpu, então o que é lento hoje não é amanhã. E se for, otimizações na engine tornam os códigos mais rápidos. O Java quando nasceu era dezenas e dezenas de vezes mais lento do que o C++, hoje ele chega a ser mais rápido que o C++ em programas que ficam muito tempo na memória, pois as otimizações possíveis em Java superam a velocidade do código já compilado em C++.
Mas é um fato. A princípio, toda linguagem script é lenta. Mas eu não deixaria de usar uma delas por conta disto a não ser que fosse algo muito pesado que seria rodado.
Então jogo fora meus códigos em script?
Pera lá! Não estou dizendo que são inúteis, acho a linguagem do Visual Basic 6 e Delphi porcas mas até eles têm sua vez. Cada caso é um caso. O PHP pela simplicidade de teste, e de desenvolvimento. Além da facilidade de montar servidores WEB, perto do Java, se tornou uma linguagem ótima para sites. Como exige pouco conhecimento de programação, programadores mesmo amadores dão suporte a complexos códigos. E comunidades bem estruturadas deixam a parte grossa do trabalho (a criação das engines que exigem mais cabeça e poderiam gerar erros mais difíceis de arrumar e contornar) para programadores mais antigos e treinados. Fazer um projeto Open Source em Java para web não é uma boa escolha. PHP mata a pau!
Mesma coisa para alguns scripts simples e básicos, onde se deseja permitir que programadores iniciantes dêem suporte. Estes podem ser feitos em linguagens como Python, PHP, Jscript e outros.
Agora, basear um projeto pago numa linguagem assim, acho uma medida errada. A menos que o foco do projeto seja criá-lo e depois não expandí-lo, deixando apenas que ocorra suportes pontuais. Aí necessitaria de mão de obra menos especializada e PHP por exemplo volta a ser uma boa escolha.
E as linguagens compiladas são perfeitas?
Claro que não. Mas elas geralmente priorizam a coerência do que facilitar a vida dos desenvolvedores.
C++ é extremamente complicada de desenvolver, mas tem diversos frameworks para te ajudar a não sofrer com ponteiros, manipulação de memória etc. Mas até você montar o ambiente…
C# é perfeita, e na minha opinião a melhor linguagem exceto por um ou outro detalhe. Mas o que queima o filme é que a melhor ferramenta para desenvolver em C# é da M$ (Visual Studio .Net) , e é anos luz mais atrasada do que outras similares para outras linguagens. Fora isto, tirando o Windows não existe nenhum OS que tem uma VM que rode o C# redondo, aliás, nem a VM da MS roda o .Net de forma redonda (e eu sei bem pois trabalho com isso há 5 anos).
Java é antigo, velho. Tem diversos conceitos que na época não existiram e foi costurado com o tempo, tornando a linguagem um mundo de remendos. Mas é onde tenho a maior parte das bibliotecas e ele funciona praticamente igual em qualquer OS. Além é claro que tem o Eclipse para ajudar (e muito).
VB 6, até hoje uso para pequenos programas visuais. Ele é de desenvolvimento rápido mas ele é um pouco a lá script. Também não tem necessidade de declarar variáveis mas resolvo isso colocando na ide para forçar a declaração. De qualquer jeito, só recomendo se for um programa muito pequeno, nada de projetos grandes. Ou então, para dlls COM+ para projetos WEB usando ASP (alias ASP é outra tranqueira).
Como vê, apesar de preferir o C# em matéria de conceito, prefiro programar em Java exceto quando preciso fazer algo visual extremamente pequeno para plataformas Win ai uso VB. Também uso muitos scripts quando é em páginas WEB, para subir ou executar pequenos programas em unix, ou até para alterar programas que usam scripts lua, python, pearl etc. Não tenho motivos para preferir uma linguagem e puxar sardinha de nenhuma delas, mas não me verá criando um projeto do zero em PHP ou Python a menos que o cliente assim exija (e olha que fiz esta merda uma vez para ver se perdia a birra com linguagens scripts e me fudi muito).
Conclusão:
Eu acredito que as linguagens de scripts têm seus lugares bem definidos: scripts. Poderão tomar o lugar de linguagens sólidas como C, C++, C#, Java, VB, Delphy etc apenas quando o gasto de desenvolvimento (empurrado com a barriga para depois) for melhor controlado e contabilizado para que empresas sérias desenvolvam seus projetos sabendo o real custo dele. A partir daí, os demais problemas devem ser resolvidos gradativamente, até lá as linguagens compiladas sempre serão melhor aceitas em projetos grandes.
Scripts são voltados para ajudar o desenvolvedor e não a coerência, e na minha opinião DEVERIAM manterem esta filosofia. Pois scripts hoje são linguagens ótimas para ambientes onde se precisa de pessoas com pouca ou nenhuma experiência em programação para dar suporte, afinal ela é de fácil aprendizado e geralmente pouco exigente. No caso do PHP, é também uma linguagem boa para Opensource visto a facilidade de se achar servidores com suporte PHP e a facilidade de instalar aplicativos PHP em servidores apache (tente fazer o mesmo com #C ou com java para ver que trampo que dá).
Mas pare por aí. Dizer que o mundo move melhor com Python, Ruby ou PHP. Ou dizer que são linguagens praticamente perfeitas? Perfeitas para quem cara-pálida?
Então se você programa em linguagem script por favor, utilize o tempo que sobrou do seu projeto para tentar procurar os erros que o compilador deixou passar, em vez de usar para tentar convencer os demais programadores a trabalharem com a sua linguagem querida.
Sobre o título
O título do artigo é uma referência a uma carta de Dijkstra que criticava linguagens que tinham goto e que foi largamente difundida no meio com variações do nome de “Programadores de verdade não programam em Pascal”. Ou seja, não quero dizer que não existem programadores de verdade usando scripts, como Dijkstra na época também não queria dizer o mesmo de Pascal. Mas sim, como ele, dizer que a linguagem proporciona aberturas que podem ser muito mal usadas por programadores ruins e dando dor de cabeça para todos.
Carta de Dijstra em PT
Carta de Dijstra original (em EN)
mas nerd também costuma ser do contra. Se for este o caso, saiba que o blog só funciona corretamente no IE se você instalar o 





Bom dia Pedro.
Sou tecnico de suporte e todos os dias tenho que fazer backup’s dos comp. de meus clientes, o problema nao e fazer o backup pois o dim dim ta entrando no bolso, rs… o problema e a trabalheira que da isso, estou procurando uma forma mais facil de fazer isso.
Voce tem o pode desenvolver um .bat nesse sentido?
Quero acessar o DOS e digitar algum comando procurando arquivos especificos ex: *.doc , *.mp3, *.avi e por ai vai, esse comando ou programa assim que achar onde estao esses arq. o proprio programa copiaria a pasta e subpasta inteira onde se localiza esse arq. vai me polpar um bocado de tempo,
imagine fazer um backup de todos os arq. doc ou xls de um cliente que tenha varios arquivos com essas extensoe distribuidas em locais diferentes do seu micro.
voce entedeu ?
quanto voce faz pra mim um bat desses ? combra barato ai pro seu amigo de profissao.
aguardo…
Robson – brasilia
Tá na hora de mudar a cabeça hein, amigo?
eu preciso de progamador pra fazer um progama pra minha empresa..por favor aguardo contato url303030@live.com
Fernando,
você já tem o projeto, gerente, tudo pronto?
Pois se não você não precisa de um programador e sim de um analista programador.
Se quiser fazer em pouco tempo (coisa de 1 a 3 meses em vez de algo de vários e vários meses), você vai precisar de um ou mais programadores, um ou mais analistas e um gerente. A menos que a sua empresa precise de pouca coisa, mas quem vai dizer isto é um analista, se você não tiver nem este levantamento inicial. Contrate um analista pra fazer este levantamento inicial, se tiver interesse eu cobro 100 reais a hora e posso fazer este levantamento.
Abraços e boa sorte,
Por favor Edson gostaria de mi add pra conversamos melhor
url303030@live.com
obrigado fernando
cara, eu noto que voce demonstra sacar muito e ter muito conhecimento das tecnologias de linguagem de programação, afinal voce esmiuçou em detalhes aí e justificou-as do seu ponto de vista. Acho interessante ver estas perspectivas, mesmo. pois nos faz pensar.
falo sem querer causar stress.
o que nao entra na minha cabeça é só uma coisa: porque entao voce nao aprendeu Python e é um puta programador nesta linguagem?
voce pode nao gostar dela pelas razoes que voce citou aí. Mas nao aprendê-la e nao aprende-la bem e rapidamente a ponto de aplicar todo seu conhecimento nela e desenvolver de modo exemplar para qualquer comunidade? nao entendo.
código ruim sempre haverá e sempre cairá nas nossas maos, nao importa a linguagem. porque cada um codifica da sua maneira, tem sua lógica, por mais que existam frameworks e padroes aí definidos. cada um vai acabar interpretando do seu jeito.
Mas foi isso que peguei sabe? Que nas outras linguagens voce pode aplicar tudo o que voce sabe e pode reaproveitar e tem facilidade de rastrear os erros e etc e tal…
Tipo, eu tenho condições de aprender Java e bem, mas nao consigo engolir os remendos, como voce falou, e a exigência de conhecimento dela para se codificar.
Já vi meu colega de trabalho me mostrando C# e tal, também nao consigo engolir a linguagem em si.
Se eu te tirar o Eclipe, o Visual Studio e tirar toda e qualquer ferramenta ou frameworks que possa te ajudar e deixar voce no edit do MS-DOS… e só te dar a referência da linguagens para consulta…
voce poderia fazer uma nova avaliação do seu post de que linguagem lhe agradaria mais para codificação?
eu pensei nisso estes dias… se me tirarem todos os recurso que facilitam e me dessem apenas a documentação para me virar, eu escolheria Python (ok. nao conheço ruby, que falam tanto…)
mas ei… nao tenho anos de experiência, nao sei design patterns, nao tenho bibliotecas minhas prontas pra uso, tenho muito ainda a aprender a desenvolver para a comunidade ou corporativamente…
mas eu faria em python pela facilidade de entende-la, por que na minha cabeça sei encontrar soluçoes e codificá-las em python…
só minha opinião também. já brinquei que se fosse para optar por algo definitivo para o resto da vida, é melhor escolher o C que é pai de tudo: de S.O a Linguagem de Programação…
mas é isto.. o importante é codificar no que somos bons e gostamos…
grande abraço
Se eu não tivesse o eclipse e nenhumba bilbioteca. E também não me vendesse a Microsoft eu acho que ia programar em Python ou JRuby (ruby rodando em java). JRuby apesar da minha crítica parece ser a linguagem mais moderna, sem remendos.
E rodando em cima de Java (JRuby) eu consigo colocar em qualquer servidor, até na nuvem do google. Python já roda em qualquer servidor sem muita dificuldade.
Python eu de fato não gostei, mas é questão de costume.
Mas ficaria muito mais feliz se a linguagem não fosse script ou ao menos tivesse tipagem forte e estática para evitar erros.
Forte abraço,
Na boa mesmo?
Você não sabe nem o que quer da vida velho.
Já viu tantas linguagens e não se acertou com nenhuma, nem mesmo linguagens sólidas.
Acho que vc devia virar design e criar brushes para photoshop.
Nossa que argumento bom. Com certeza desmontou cada ponto do meu artigo.
Deixe me pensar, você deve programar em algum tipo de script, acertei?
É que minha bola de cristal anda afiada =)
Olá Edson, tudo bem? Sou programador PHP e venho aprendendo aos poucos Java, C, C# e agora quero aprender Python, mas foi o que você disse, simplesmente não desce, aquele código identado começa a virar uma bagunça na mente, é muito estranho pra quem programa com blocos e { }, eu pelo menos programo em script, PHP, e não me vejo desleixado ou preguiçoso pelo que a linguagem me oferece, sempre faço meus códigos organizados, respeitando todos os conceitos de design patterns.
Porém achei você meio contraditório nos seus comentários, principalmente este último, pois em algum lugar do post você diz que não defende linguagens, que devemos aprender outras, pelo menos é isso que conclui do post, porém, parece que nos comentários você odeia linguagens scripts, qual o problema? Vejo tantos projetos grandes com elas, olha o PHP, é feito quase que completo em PHP, uma linguagem script. Mas claro, que para 1 projeto grande em linguagens scripts, existem 10 em linguagens mais sólidas, mas não culpemos as linguagens e sim as pessoas que trabalham com ela.
Obrigado, abraço.
Ola Cezar,
bom primeiro obrigado pelo seu comentário.
Perdoe-me se o texto pareceu contraditório mas apesar de ter sido deveras provocativo a minha intenção não era dizer que scripts não prestam. E sim que programadores de scripts não deveriam perder tempo catequizando programadores de Java e C#. O motivo é que scripts não são tão perfeitos quanto querem defender os clérigos de Ruby, Python e similares.
Eu programo muito em Javascript e adoro, acho que ele casa bem com a web. Mas são scripts curtos (a maioria pelo menos) , para rodar numa página e não no servidor.
Existem bons programas e programadores de scripts para servidor (como o PHP)? Sim, existe. O problema não é a “falta de”, e sim a “chance de”. Como o script permite erros de compilação existem falhas que demorarão para serem descobertas. Bons programadores vão saber desviar-se destas falhas mas não impede que uma distração de alguém mais novato (e as vezes até um veterano) cai nelas.
Resumindo, como você disse o problema são as pessoas e não a linguagem. Mas se a linguagem criar barreiras anti-burrice, os programadores ruins tendem a se afastar dela.
OBS: Adicionei uma informação importante no final do post sobre o título, pois o título sim pode parecer contraditório com o restante do post mas é apenas uma referência que nem todos podem ter notado.
Forte abraço,
E ai Edson, gostei do blog, e aquele Taulukko, uma amiga minha da faculdade me apresentou ele, ela disse que participou do projeto, Camila, conhece?
Bem, no meu comentário, só corrigindo:
Vejo tantos projetos grandes com elas, olha o PHP, é feito quase que completo em PHP, uma linguagem script.*
Quis falar do Facebook, que é quase feito em PHP.
Abraço
“Mas se a linguagem criar barreiras anti-burrice, os programadores ruins tendem a se afastar dela.”
Errado, como todo meu tempo trabalhando como programador Java mostrou. Programadores ruins são ruins em qualquer linguagem, e quanto maior o mercado em uma linguagem (e Java tem o maior mercado até a última vez que olhei), mais programadores tem, e quanto mais programadores, maior o número de programadores ruins.
Sua resistência contra as linguagens de script vêm de preferências de estilo (obrigatoriedade de blocos? bah) e medo de programadores ruins. O primeiro é questão de costume, o segundo é questão de RH.
A única ressalva forte que eu faço é que a função do compilador não é achar erros.
Conheço a Camila sim =)
E o Facebook não é o único bom exemplo, cito : Wikipedia, Wordpress, entre centenas de outros. Como disse, existem bons programadores em qualquer linguagem assim como programadores ruins ^^
Wilerson, acho que fui infeliz ao dizer isto.
O correto seria, “quanto mais barreiras anti-burrice a linguagem tiver, mais educados a programar corretamente os programadores se tornarão”
Linguagens tolerantes a erros fazem programas com erros, não tem como negar.
E por último, o objetivo do compilador não é achar erros, mas que ele acha, ele acha =D
Li tudo e não entendi nada
De programação não entendo nada, mais adoro um debate de quem entende do assunto.
Edson fio quando tiver outro teste do taulukko me avisa, nunca me divertir tanto…