Encontrando uma nova linguagem de programação para desenvolvimento web? [fechadas]

14

Eu estou querendo saber se existem recursos menos tendenciosos que fornecem boas visões gerais específicas das linguagens de programação e seus objetivos pretendidos. Gostaria de aprender um novo idioma, mas visitar os sites de cada idioma não está funcionando. Cada um fala sobre o quão bom é sem mencionar suas fraquezas ou objetivos específicos .

Ruby é uma linguagem de programação dinâmica e de código aberto, com foco na simplicidade e produtividade.

Python é uma linguagem de programação que permite trabalhar mais rapidamente e integrar seus sistemas com mais eficiência.

Sendo desenvolvedor de PHP há anos, Vic Cherubini resume bem minha situação:

Eu conhecia bem o PHP, tinha minha própria estrutura e podia trabalhar rapidamente para colocar algo em funcionamento.

Programei assim durante toda a revolução do MVC. Consegui trabalhos cada vez melhores (leia-se: melhor remuneração, melhor título) como desenvolvedor de PHP, mas percebi o tempo todo que o código que escrevi no meu tempo era ótimo, e o código com o qual trabalhava era horrível. Tipo, pior que horrível. Atroz. Nível de comércio do SO ruim. Ter projetos paralelos me mantinha são, porque o código com o qual trabalhava me deixava infeliz.

É por isso que estou me aposentando do PHP para meus projetos paralelos e novos empreendimentos de programação. Estou gasto com PHP. Exausto, se você quiser. Cheguei a um nível em que acho que estou no topo com ela como uma linguagem e, se não passar para uma nova linguagem em breve, terminarei completamente a programação e não quero isso.

Os idiomas que eu analisei incluem JavaScript (para node.js), Ruby, Python e Erlang. Eu até pensei em Scala ou C ++.

O problema é descobrir quais são construídas para lidar melhor com minhas necessidades.

Então, onde posso pular o hype e obter informações reais sobre a maturidade de uma plataforma, o tamanho da comunidade e os pontos fortes e fracos desse idioma. Se eu os conheço, escolher um idioma para continuar meu desenvolvimento na web deve ser fácil.

Atualizar

Eu só não quero passar quatro meses no caminho com algum idioma e acho que é uma droga porque cada thread tem 4 MB de sobrecarga ou as conexões simultâneas máximas são 999, não há pacote para executar o recurso "X" ou o suporte é sendo descontinuado para um novo ramo de idioma.

Xeoncross
fonte
14
É difícil dizer qual deles atenderá melhor às suas necessidades se você não especificar essas necessidades.
22411 vartec
3
Por isso não defini minhas necessidades - minhas necessidades pessoais estão fora de questão . Quero saber onde procurar para corresponder minhas necessidades a uma determinada linguagem de programação. Porque minhas necessidades podem mudar e preciso voltar novamente.
Xeoncross
Vale ressaltar que também há mais em um programa do que em velocidade de execução . A velocidade de desenvolvimento e a maneira como você deve criar seu aplicativo (devido ao idioma) desempenham um papel importante.
Xeoncross
4
trata-se menos de idiomas e mais de maturidade e riqueza de recursos das estruturas disponíveis para eles.
1
Eu sugiro que você dê uma olhada neste excelente post de Alex Martelli.
Phant0m

Respostas:

3

Eu não publicaria isso como resposta, mas o Xeoncross me pediu, então aqui vamos nós:

(Nota: se alguém pudesse corrigir o problema de remarcação no pequeno exemplo de código, eu agradeceria.)

Postado por Alex Martelli em comp.lang.python : O que há de melhor no Ruby que no Python? em 18 de agosto de 2003, 17:50

Erik Max Francis escreveu:

"Brandon J. Van Every" escreveu:

O que há de melhor no Ruby que no Python? Tenho certeza de que há algo. O que é isso? Não faria muito mais sentido perguntar isso às pessoas Ruby do que às pessoas Python?

Talvez, ou não, dependendo dos propósitos de alguém - por exemplo, se os propósitos de alguém incluem um "estudo sociológico" da comunidade Python, então, fazer perguntas a essa comunidade provavelmente será mais revelador de informações sobre ele do que colocá-las em outros lugares. :-). Pessoalmente, aproveitei a oportunidade para acompanhar o tutorial de um dia sobre o Ruby de Dave Thomas, finalmente no OSCON. Abaixo de um fino verniz de diferenças de sintaxe, acho Ruby e Python incrivelmente semelhantes - se eu estivesse computando a árvore de abrangência mínima entre praticamente qualquer conjunto de idiomas, tenho certeza de que Python e Ruby seriam as duas primeiras folhas a se unir um nó intermediário :-).

Certamente, em Ruby, eu me canso de digitar o "final" bobo no final de cada bloco (em vez de apenas desinteressante) - mas evito digitar o igualmente bobo : que o Python exige no início de cada bloco, então isso é quase uma lavagem :-). Outras diferenças de sintaxe, como @fooversus self.foo, ou o significado mais alto de maiúsculas e minúsculas em Ruby vs Python, são realmente tão irrelevantes para mim.

Outros, sem dúvida, baseiam sua escolha de linguagens de programação nessas questões e geram os debates mais quentes - mas para mim esse é apenas um exemplo de uma das Leis de Parkinson em ação (o valor do debate sobre um assunto é inversamente proporcional ao da questão). importância real). Uma diferença de sintaxe que eu acho importante, e a favor do Python - mas outras pessoas, sem dúvida, pensarão exatamente o contrário - é "como você chama uma função que não requer parâmetros". No Python (como em C), para chamar uma função, você sempre aplica o "operador de chamada" - parênteses finais logo após o objeto que você está chamando (dentro desses parênteses finais estão os argumentos que você está passando na chamada - se você não está passando argumentos, então os parênteses estão vazios). Isso deixa a mera menção de qualquer objeto, sem operador envolvido, como significando apenas uma referência ao objeto - em qualquer contexto, sem casos especiais, exceções, regras ad-hoc e similares. Em Ruby (como em Pascal), para chamar uma função WITH argumentos, você passa os argumentos (normalmente entre parênteses, embora esse não seja sempre o caso) - MAS, se a função não aceita argumentos, basta mencionar a função que a chama implicitamente. Isso pode atender às expectativas de muitas pessoas (pelo menos, sem dúvida, aquelas cuja única experiência anterior de programação foi com Pascal, ou outras linguagens com "chamadas implícitas" semelhantes, como o Visual Basic) - mas para mim, isso significa que mera menção de um objeto pode significar uma referência ao objeto, OU uma chamada ao objeto, dependendo do tipo de objeto - e nos casos em que não consigo obter uma referência ao objeto, basta mencioná-lo, precisarei usar explícito "dê-me uma referência a isso, NÃO a chame!" operadores que não são necessários de outra forma. Eu sinto que isso afeta a "primeira classe" de funções (ou métodos ou outros objetos que podem ser chamados) e a possibilidade de trocar objetos sem problemas. Portanto, para mim, essa diferença de sintaxe específica é uma séria marca negra contra Ruby - mas eu entendo por que os outros agiriam de outra maneira, mesmo que eu mal pudesse discordar mais veementemente deles :-). Abaixo da sintaxe, encontramos algumas diferenças importantes na semântica elementar - por exemplo, as strings no Ruby são objetos mutáveis ​​(como no C ++), enquanto em Python eles não são mutáveis ​​(como em Java, ou eu acredito em C #). Novamente, as pessoas que julgam principalmente pelo que já estão familiarizadas podem pensar que isso é uma vantagem para o Ruby (a menos que estejam familiarizadas com Java ou C #, é claro :-). Eu, acho que seqüências imutáveis ​​são uma excelente ideia (e não estou surpreso que o Java, de forma independente, tenha reinventado a ideia que já estava em Python), embora eu não me importe em ter um tipo de "buffer de sequência mutável" também (e, idealmente, um com melhor facilidade de uso do que os próprios "buffers de string" do Java); e não julgo por causa da familiaridade - antes de estudar Java, além das linguagens de programação funcionais em que as pessoas que julgam principalmente pelo que já estão familiarizadas podem pensar que isso é uma vantagem para o Ruby (a menos que estejam familiarizadas com Java ou C #, é claro :-). Eu, acho que seqüências imutáveis ​​são uma excelente ideia (e não estou surpreso que o Java, de forma independente, tenha reinventado a ideia que já estava em Python), embora eu não me importe em ter um tipo de "buffer de sequência mutável" também (e, idealmente, um com melhor facilidade de uso do que os próprios "buffers de string" do Java); e não julgo por causa da familiaridade - antes de estudar Java, além das linguagens de programação funcionais em que as pessoas que julgam principalmente pelo que já estão familiarizadas podem pensar que isso é uma vantagem para o Ruby (a menos que estejam familiarizadas com Java ou C #, é claro :-). Eu, acho que seqüências imutáveis ​​são uma excelente ideia (e não estou surpreso que o Java, de forma independente, tenha reinventado a ideia que já estava em Python), embora eu não me importe em ter um tipo de "buffer de sequência mutável" também (e, idealmente, um com melhor facilidade de uso do que os próprios "buffers de string" do Java); e não julgo por causa da familiaridade - antes de estudar Java, além das linguagens de programação funcionais em que Eu acho que strings imutáveis ​​são uma excelente ideia (e não estou surpreso que o Java, de forma independente, tenha reinventado a ideia que já estava em Python), embora eu não me importe em ter um tipo de "buffer de string mutável" (e idealmente, com melhor facilidade de uso do que os próprios "buffers de string" do Java); e não julgo por causa da familiaridade - antes de estudar Java, além das linguagens de programação funcionais em que Eu acho que strings imutáveis ​​são uma excelente ideia (e não estou surpreso que o Java, de forma independente, tenha reinventado a ideia que já estava em Python), embora eu não me importe em ter um tipo de "buffer de string mutável" (e idealmente, com melhor facilidade de uso do que os próprios "buffers de string" do Java); e não julgo por causa da familiaridade - antes de estudar Java, além das linguagens de programação funcionais em quetodos os dados são imutáveis, todas as linguagens que eu conhecia tinham seqüências de caracteres mutáveis ​​- mas, quando vi pela primeira vez a idéia de sequência imutável em Java (que aprendi muito antes de aprender Python), ela imediatamente me pareceu excelente, uma boa opção para a semântica de referência de uma linguagem de programação de nível superior (em oposição à semântica de valores que se encaixa melhor com linguagens mais próximas da máquina e mais distantes dos aplicativos, como C), com strings como primeira classe, embutida (e bastante crucial) tipo de dados.

O Ruby tem algumas vantagens na semântica elementar - por exemplo, a remoção da distinção "sutil versus simples" do Python. Mas, principalmente, o placar (como eu o mantenho, com simplicidade, uma grande diferença sutil e inteligente, um notável menos) é contra Ruby (por exemplo, tendo intervalos fechados e semiabertos, com as anotações a..b e a .. .b [alguém quer afirmar que é óbvio qual é qual? ​​-)], é bobagem - IMHO, é claro!). Mais uma vez, as pessoas que consideram ter muitas coisas semelhantes, mas sutilmente diferentes, no núcleo de uma linguagem, um PLUS, em vez de um MINUS, obviamente contará essas coisas "ao contrário" da maneira como as conto :-).

Não se deixe enganar por essas comparações, pensando que as duas línguas são muitodiferente, lembre-se. Eles não são. Mas se me pedirem para comparar "capelli d'angelo" com "spaghettini", depois de apontar que esses dois tipos de macarrão são praticamente indistinguíveis para qualquer pessoa e intercambiáveis ​​em qualquer prato que você queira preparar, eu inevitavelmente teria para examinar microscopicamente como os comprimentos e diâmetros diferem imperceptivelmente, como as extremidades dos fios são afuniladas em um caso e não no outro, e assim por diante - para tentar explicar por que eu, pessoalmente, preferiria capilar. «angelo como a massa em qualquer tipo de caldo, mas preferiria o espaguete à massa, com molhos adequados para formas tão longas e finas (azeite, alho picado, pimentão picado e anchovas finamente moídas, por exemplo - mas se você cortou o alho e o pimentão em vez de picá-los, deve escolher o corpo mais saudável do espaguete em vez da mais fina evanescência do espaguete, e é recomendável renunciar à achoview e adicionar um pouco de manjericão fresco [ ou até - eu sou um herege ...! - folhas de hortelã leve ...] - no último momento antes de servir o prato). Opa, desculpe, isso mostra que estou viajando para o exterior e não tenho macarrão há um tempo, eu acho. Mas a analogia ainda é muito boa! ​​-) e seria aconselhável renunciar à achoview e adicionar um pouco de manjericão fresco da primavera [ou até mesmo - eu sou um herege ...! - folhas de hortelã leve ...] - no último momento antes de servir o prato). Opa, desculpe, isso mostra que estou viajando para o exterior e não tenho macarrão há um tempo, eu acho. Mas a analogia ainda é muito boa! ​​-) e seria aconselhável renunciar à achoview e adicionar um pouco de manjericão fresco da primavera [ou até mesmo - eu sou um herege ...! - folhas de hortelã leve ...] - no último momento antes de servir o prato). Opa, desculpe, isso mostra que estou viajando para o exterior e não tenho macarrão há um tempo, eu acho. Mas a analogia ainda é muito boa! ​​-)

Então, voltando ao Python e Ruby, chegamos às duas coisas mais importantes (em termos de linguagem propriamente dita - deixando as bibliotecas e outros acessórios importantes, como ferramentas e ambientes, como incorporar / estender cada linguagem etc., etc.) por enquanto - eles não se aplicariam a todas as IMPLEMENTAÇÕES de cada idioma, por exemplo, Jython vs Classic Python sendo duas implementações da linguagem Python!):

  1. Iteradores e blocos de código do Ruby versus iteradores e geradores do Python;

  2. TOTAL do Ruby, "dinâmica" desenfreada, incluindo a capacidade de "reabrir" qualquer classe existente, incluindo todas as incorporadas, e alterar seu comportamento em tempo de execução - versus a vasta mas limitada dinamicidade do Python     , que nunca muda o comportamento da existente classes internas e suas instâncias.

Pessoalmente, considero 1 uma lavagem (as diferenças são tão profundas que eu poderia facilmente ver as pessoas odiando qualquer abordagem e reverenciando a outra, mas no meu escalas pessoais os prós e contras apenas sobre mesmo para cima); e [2] uma questão crucial - que torna Ruby muito mais adequado para "mexer", MAS o Python é igualmente mais adequado para uso em grandes aplicações de produção. É engraçado, de certa forma, porque os dois idiomas são MUITO mais dinâmicos que a maioria dos outros, que no final a principal diferença entre eles do meu ponto de vista deve depender disso - que Ruby "chega às onze" a esse respeito (a referência aqui é para "Spinal Tap", é claro). Em Ruby,EU POSSO FAZER ISSO ! Ou seja, eu posso alterar dinamicamente a classe de string incorporada para que

a = "Olá mundo" 
b = "olá mundo" 
se a == b 
    imprima "igual! \ n" 
outro 
    imprima "diferente! \ n" 
fim
 

VAI imprimir "igual". Em python, não há como eu fazer isso. Para fins de metaprogramação, implementação de estruturas experimentais e similares, essa incrível capacidade dinâmica do Ruby é extremamente atraente. MAS - se estamos falando de aplicativos grandes, desenvolvidos por muitas pessoas e mantidos por ainda mais, incluindo todos os tipos de bibliotecas de diversas fontes, e precisando entrar em produção nos sites dos clientes ... bem, eu NÃO QUERO um idioma MUITO dinâmico, muito obrigado. Eu detesto a própria idéia de uma biblioteca involuntariamente quebrar outras não relacionadas que dependem dessas seqüências de caracteres - esse é o tipo de "canal" profundo e profundamente oculto, entre pedaços de código que parecem separados e DEVEM estar separados, que significa morte em programação em larga escala. Ao permitir que qualquer módulo afete o comportamento de qualquer outro "secretamente",

Se eu tivesse que usar o Ruby para um aplicativo tão grande, tentaria confiar em restrições no estilo de codificação, em muitos testes (para ser executado novamente sempre que ALGUMA COISA mudar - mesmo o que não deve ser totalmente relacionado ...), e assim por diante, proibir o uso desse recurso de idioma. Mas NÃO ter o recurso em primeiro lugar é ainda melhor, na minha opinião - assim como o próprio Python seria uma linguagem ainda melhor para a programação de aplicativos se um certo número de built-ins pudesse ser "pregado", então eu sabia que , por exemplo, len("ciao")é 4 (em vez de precisar se preocupar subliminarmente se alguém alterou a ligação do nome lenno __builtins__ módulo ...). Espero que, eventualmente, o Python "prenda" seus built-ins.

Mas o problema é pequeno, uma vez que a religação de embutidos é uma prática bastante obsoleta e rara em Python. Em Ruby, isso me parece importante - assim como as facilidades macro muito poderosas de outras linguagens (como, por exemplo, Dylan), apresentam riscos semelhantes em minha opinião (espero que o Python nunca consiga um sistema macro tão poderoso, não importa o fascínio de "deixar as pessoas definirem suas próprias pequenas linguagens específicas de domínio incorporadas na própria linguagem" - isso IMHO prejudicaria a maravilhosa utilidade do Python para programação de aplicativos, apresentando um "incômodo atraente" para o aspirante a analista que espreita no coração de todo programador ...).

Alex

phant0m
fonte
Eu concordei isso como a resposta, porque é uma ótima visão geral relativamente parcial do Ruby e Python como um todo. Explicando como os idiomas funcionam e não funcionam .
Xeoncross
27

Boa sorte

Nenhuma das descrições de exemplo fornecidas é objetiva ou testável. Eles são todos hype e opinião.

... simplicidade e produtividade ... mais rapidamente ... mais efetivamente.

Tente

Pegue um pequeno projeto de amostra do tipo que você provavelmente está realizando e tente com todos os idiomas que lhe interessam. Poste sua revisão objetiva e todos saberemos.

Steven A. Lowe
fonte
2
Não é uma má idéia, mas não funcionaria no mundo real. Sem gastar tempo compreendendo completamente cada idioma - eu nunca poderia prever o problema completo do padrão de design e os benefícios que cada sistema poderia oferecer. Tenho certeza de que levaria meses de trabalho em cada idioma para obter um entendimento de alto nível do próprio idioma. Prefiro ouvir os especialistas em pneus do que passar meses desengenharia de cada roda para descobrir por que eles a construíram dessa maneira. Ainda assim, depois de ter bons candidatos, certamente o farei.
Xeoncross
1
@Xeoncross: com cada idioma que você tentar, você aumentará sua experiência e poderá aproveitá-la em outros idiomas. 4 meses para mergulhar em um idioma nunca são perdidos; e se o idioma for realmente ruim, você precisará de menos de duas semanas para descobrir.
tdammers
É verdade, deve levar apenas algumas semanas para criar algo e eu me beneficiaria com a experiência, pois os idiomas geralmente seguem outros idiomas.
Xeoncross
3
Sim, você provavelmente deve tentar todos esses idiomas para encontrar um bom ajuste. Mas o problema é que, quando você usa um novo idioma, não o usa da maneira que deveria inicialmente. Você acaba fazendo a mesma coisa que estava fazendo com o idioma que já sabe usar apenas com sintaxe diferente. Demora um pouco de tempo para descobrir os pontos mais delicados de cada idioma e quais são realmente os benefícios.
radix07
3
Eu ficaria surpreso se houvesse alguma diferença significativa entre os idiomas modernos para fins gerais. Lá, eu disse em voz alta. E em itálico . Que comecem as chamas!
Steven A. Lowe
8

Eu acho que parte do problema é que qualquer pessoa que saiba o suficiente para comentar significativamente sobre um ou mais idiomas terá um viés. Em quase 4 décadas de programação, trabalhei em mais linguagens do que posso contar. Posso dar-lhe opiniões (algumas delas datadas) sobre algumas dessas línguas, mas nenhuma dessas opiniões será imparcial.

Adotei a abordagem de usar o idioma certo para o trabalho. Você pergunta especificamente sobre desenvolvimento web , mas essa ainda é uma categoria bastante ampla - como dizer que você está interessado em fotografia. Micro? Astro? etc. Embora eu concorde que o PHP não seja uma linguagem emocionalmente satisfatória para trabalhar, para muitos clientes é a linguagem certa com base em vários fatores, entre os quais a capacidade de longo prazo de encontrar programadores para consertar o site depois que você sai e / ou ser atropelado por um ônibus.

Portanto, talvez você deva examinar os tipos de clientes que estão interessados ​​em projetos que se prestam a algo diferente e depois trabalhar para se tornar interessante para eles.

Peter Rowell
fonte
Bem, já que sou muito bom em PHP - continuarei trabalhando nele, pois ainda posso viver bem. Eu estava pensando principalmente em um novo idioma para meus próprios projetos. Algo para ajudar a adicionar um pouco de sabor à minha vida. Eu trabalho em praticamente todos os desenvolvimentos da Web que você pode imaginar, PNL, análise de texto, CMS, APIs, armazenamento etc. Além disso, alguém com experiência em vários idiomas tem muito menos tendência do que pessoas com apenas um processo de design.
Xeoncross
Ah Então, darei minha resposta padrão para as perguntas do tipo "melhor linguagem": Python. Ignorando "espaço em branco significativo" (o que é possível), é quase uma linguagem perfeita para mim. Além disso, há um número incrível de bibliotecas de alta qualidade por aí com APIs Python. Por exemplo, o NLTK, Natural Language Toolkit ( nltk.org ).
precisa
Ah, mas o que é o Python que o torna melhor? A maioria das linguagens todos compartilham os mesmos kits de ferramentas - é o design linguagem que introduz coisas como threading, concorrência, exigências VM, compilação / interpretação, persistência, etc.
Xeoncross
O Python é simplesmente divertido de programar. Isso é o que o torna "melhor" para mim. É simples o suficiente para que você não precise de um grande IDE buzinando apenas para codificá-lo. Mas também possui muitos recursos interessantes, como objetos, recursos de programação funcional, muitas bibliotecas / estruturas / ferramentas existentes e uma comunidade próspera e entusiasta com muita documentação aberta / gratuita para você continuar.
John Gaines Jr.
2
Verdade. A explicação mais simples é que o Python funciona como meu cérebro e isso me deixa mais produtivo; Eu quase nunca me pergunto: "Agora, como eu faria isso em Python?" Embora o GIL (Bloqueio Global de Intérpretes) seja um pouco problemático, ele não tende a me afetar muito porque lida mais frequentemente com situações de multiprocessos (principalmente pipelines de processamento NL de vários estágios) do que com multitarefa . Eu também gosto da variedade de opções de interface para acessar novas bibliotecas externas: ctypes, Boost etc.
Peter Rowell
7

Pitão

O objetivo mais universal e geral de todos eles, mas também no caso de programação na web, oferece uma ampla variedade de produtos. A interface WSGI padronizada garante grande interoperabilidade entre a estrutura e os servidores. Alguns dos notáveis ​​produtos da Web Python:

  • Django - estrutura madura de alto nível com ORM avançado, sistema de modelagem, manipulação de formulários etc.
  • Twisted - estrutura para programação de rede orientada a eventos (assíncrona), pode ser usada para bate-papos, servidores de soquete, serviços da web, etc.
  • Tornado - também estrutura orientada a eventos, mas essa foi projetada para serviços da Web assíncronos.

Rubi

Ruby também é uma linguagem bastante universal. Mas, de longe, o produto mais notável é o Ruby on Rails. Seu design foi inspiração para muitos (incluindo o Django mencionado acima).

Javascript

Atualmente, a única opção do lado do servidor para JS é node.js. É muito parecido com Tornado e Twisted (pelo qual foi inspirado). No entanto, ainda falta uma estrutura completa semelhante ao Django ou RoR construída sobre ela.

Scala

Por ser uma linguagem funcional, ela é ótima para computação massivamente paralela, na programação da Web para fins gerais, existe o Lift - framework da Web inspirado no RoR, usado, por exemplo, no FourSquare.

vartec
fonte
Vale ressaltar que coisas como respostas sem bloqueio, uso de memória, simultaneidade e outros fatores são enormes no mercado para um novo idioma que potencializará um aplicativo Web.
Xeoncross
+1 para o Django. Fiquei impressionado quando eu aprendi ... isso, ou eu estava em um estupor atordoado porque eu aprendi e Python simultaneamente. De qualquer maneira, gostaria de revisitá-la de uma ótima tecnologia, meu sempre indescritível "tempo livre".
zourtney
1
"... ainda falta uma estrutura completa" Confira o Express for Node - expressjs.com
T. Stone
@ T: sim, eu olhei para o Express. Um dos pontos fortes do Django e RoR é o ORM. Express não parece ter.
vartec
3

No meu projeto web mais recente, comecei com o PHP porque já o havia usado antes (início rápido), mas tive muitos problemas com a linguagem, por exemplo, mau suporte a UTF-8 e digitação dinâmica. Também tenho experiência em Java e gosto muito das ferramentas de digitação estática e de refatoração. Java também tem bom desempenho em comparação com PHP. Mas também gosto da expressividade da programação funcional.

Estrutura Scala and Play

Com a experiência acima, eu realmente gosto da linguagem de programação Scala, que está estaticamente tipificada, tem suporte para programação funcional e orientada a objetos e tem bom desempenho em comparação com outras linguagens usadas para desenvolvimento web. Mas não gostei das estruturas da web para Java e servlets, e encontrei o Play Framework com suporte para Scala e Java e com um ciclo de desenvolvimento muito rápido - salve o arquivo e atualize sua página da web. Fiquei muito satisfeito com o Scala & Play Framework no mês passado. Mas o suporte do Scala no Play Framework ainda não está muito maduro e nem o suporte de ferramentas.

Em resumo, recomendo o Scala como linguagem de programação e o Play Framework como framework da web.

Jonas
fonte
O jogo parece legal, mas ainda não tivemos a chance de testá-lo ( realmente ). Vindo de um plano de fundo semelhante ao php, achei o Lift bastante fácil de entender. Também parece ser um pouco mais maduro do que o Play, mas sou muito novo no Scala para ser conclusivo.
yannis
3

Na verdade, você provavelmente está analisando três tipos de recursos:

  • Aquele que explica o básico do idioma e por que você deseja usá-lo,
  • Aquele que compara várias línguas.
  • Aquele que critica algum aspecto de uma linguagem.

Ambos os recursos seriam tendenciosos.

  • Quando você explica algo sobre um idioma, tenta na maioria das vezes convencer o leitor a usá-lo. Então você raramente diria que o idioma é péssimo.
  • Ao comparar vários idiomas, você sempre tem uma preferência pessoal por um deles.
  • Quando você critica algo, bem, dificilmente é possível ser neutro.

Você pode encontrar uma comparação neutra, mas é muito difícil escrever uma. Pessoalmente, eu nunca seria capaz de escrever uma comparação entre uma linguagem real e o PHP sem criticar o PHP o tempo todo. E tenho certeza de que não estou sozinha por não ser suficientemente neutra.


Se você deseja ter uma visão geral de diferentes idiomas, precisa aprender você mesmo e ler muito . Ao aprender, quero dizer conhecer o básico do idioma, mas poder ter sua própria opinião . Não é porque você leu um manual do Ruby que você é capaz de explicar o que é bom e o que é ruim nesse idioma.

Isso significa que você precisa gastar tempo (meses ou até anos) praticando. Ou você pode ler muito. Mas tente ler coisas contraditórias . Se alguém escreve que odeia PHP e PHP é uma das piores linguagens de todos os tempos, especialmente em comparação com linguagens reais como Ruby, C # ou Java, tente também encontrar uma pessoa que diga que o PHP é maravilhoso e é muito mais fácil de usar do que C #, muito mais rápido que Java e muito ... (eu realmente não sei o que) do que Ruby.

Lembre-se de uma coisa: se você já conhece bem um idioma, será muito crítico no início ao aprender outro , acreditando que o idioma que você já conhece é melhor e muito mais fácil de usar. É como usuários do Linux que odeiam o Windows e usuários do Windows que odeiam o Linux: de fato, nenhum SO é melhor; é que um usuário Linux não sabe usar o Windows e vice-versa. Só depois de adquirir experiência suficiente nos dois é que você poderá decidir corretamente qual é o melhor para você.


A última coisa, muitas vezes esquecida: também é muito importante poder avaliar o "ambiente" de um idioma:

  • Quão boa é a estrutura (ou as estruturas mais usadas)?
  • É fácil encontrar um serviço de hospedagem? Você aprecia o IDE?
  • Existem várias bibliotecas de terceiros bem escritas?
  • A comunidade é composta por desenvolvedores altamente profissionais, ou principalmente por iniciantes que não sabem nada sobre programação em geral, nem sobre a própria linguagem?
  • A documentação é detalhada e fácil de pesquisar e entender?
  • O idioma e as estruturas são atualizados com freqüência?
  • etc.
Arseni Mourzenko
fonte
Eu concordo totalmente. É para essas perguntas que estou procurando uma resposta. Você menciona ler muito - e é isso que estou tentando fazer - preciso de muitos recursos para ler sobre os idiomas em que quero estudar. Embora não seja possível ter uma revisão imparcial, algumas são muito mais equilibradas e isso é tudo que eu queria.
Xeoncross
2

Bem, como um dos seus critérios parece ser "divertido de se trabalhar", acho que você deseja encontrar informações tendenciosas. Se o autor de algo é apaixonado por sua língua preferida, há uma boa chance de que eles façam uma avaliação tendenciosa.

Talvez você deva abordá-lo de outra direção. Como você parece estar falando em mudar de carreira e não de um hobby, talvez você deva pesquisar alguns anúncios de emprego, encontrar algumas tecnologias / idiomas interessantes e investigá-los.

Quanto aos idiomas com objetivos específicos, muitos idiomas não os têm. A maioria dos idiomas listados é de uso geral. Por exemplo, a linguagem Ruby é uma linguagem de uso geral bastante adequada para muitas tarefas. Depois de adicionar uma estrutura, como o Rails , isso tem um objetivo bem específico.

John Gaines Jr.
fonte
1

Isso não é exatamente o que você estava perguntando, mas se eu estivesse procurando algo para me tirar de uma rotina profissional de desenvolvimento web, enquanto ainda aproveitasse essa experiência e contatos, eu começaria a escrever aplicativos para Android e iPhone. Ser capaz de vender um aplicativo que complementa o site de um cliente pode realmente fazer você se destacar no desenvolvimento de uma Internet cada vez mais acessada por dispositivos móveis.

Karl Bielefeldt
fonte
Isso realmente não é uma má idéia. Eu também estava pensando em passar mais tempo no Illustrator e no Photoshop trabalhando em meus projetos. Ainda assim, gostaria de descobrir mais sobre as opções de aplicativos da web disponíveis.
Xeoncross
0

Você realmente atingiu o limite do PHP ou apenas os limites do PHP como você o conhece?

Você já olhou para o Drupal ? É uma estrutura de programação e CMS baseada em PHP que incentiva fortemente bons padrões e práticas de codificação. (Tendo trabalhado com o OSCommerce em trabalhos anteriores, sinto sua dor por lá.) Embora baseado em PHP, é diferente o suficiente para que muitas vezes a maneira "certa" de fazer algo em PHP puro não seja a maneira certa de fazê-lo no Drupal, e você terá uma boa curva de aprendizado para escalar para realmente dominá-la. No entanto, isso pode mudar suas perspectivas sobre os recursos do PHP como linguagem e o desenvolvimento da web como um todo.

Garrett Albright
fonte
A última vez que olhei para Drupal (4 e 5), foi bastante ruim. Talvez suas versões mais recentes usem padrões adequados agora. Ainda assim, por mais lento que seja, eu preferiria ficar com os quadros incríveis por aí.
Xeoncross