Porque a sintaxe das linguagens de programação não evoluem?
|
|
Sou desenvolvedor a 15 anos e desde aquela época em que poucos sabiam o que era a internet o grande sonho eram as linguagens de programação que permitiriam trazer para a realidade telas, efeitos e interfaces só imaginadas nos livros e filmes de ficção ciêntifica. Era muito difícil abrir o editor para escrever em mumps, assembler, cobol, rpg, jcl ou c. E em “plataforma baixa” (como se falava dos pcs) desenvolviam em basic, dbase, clipper e pascal. Com a entrada do windows algumas linguagens novas surgiam com conceito RAD como SqlWindows, power builder, visual basic, delphi e nascia o caminho para se chegar aquele sonho das interfaces maravilhosas. O sonho RIA chegou e todos olharam para o flex em sua ideía de usar o xml para arrumar a programação das telas e isso fez todos cairem a ficha já começar a copiar o que era obvio. Agora com as linguagens baseadas em xml cada coisa tem seu lugar. E isso é ótimo. Mas por que a sintaxe das linguagens complementares ficou tão ruim? Por que não evoluiu? Por que quase todas as linguagens agora seguem a aparência do c++ e java. Esta insanidade que é o padrão ecma. é decepcionante mas ninguem comenta ou fala algo sobre. Na minha opinião destruiriam completamente a orientação a objetos e seus beneficios. E o java então não tem evolução tem más ideeias e remendos em cima de remendos para tentar minimisar as más idéias. Escrever um programa hoje é muito complicado e muito bagunçado é um festival de arquivos de diretórios e se escreve muito pra se ter muito pouco. E ao invés de se evoluir para isso partimos para geradores automaticos para esta bagunça toda. Mas e na hora da manutenção? Gerar o codigo é ótimo mas e colocar novas instruções ou sair o desenvolvedor e outro ser contratado e assumir a bagunça. pensem bem temos um dado numa tabela num banco de dados se o caminho entre este dado e a tela do usuário e o o retorno da tela do usuário até novamente esta tabela quantos de código você precisa escrever? Acho que poderiamos abrir um editor rad e perder menos tempo programando coisas inuteis e poderiamos realmente programar para resolver logicas de negocio e reduzir tempo e esforço desnecessário e ganhar produtividade. bom acho que foi só um desabafo. |
|
|
Concordo em partes. E justamente a parte que eu discordo é a que você concorda, que é quanto ao XML para construção interfaces visuais. Lógicamente que é uma opinião pessoal, mas eu acho que XML não foi feito para de fazer o visual de uma aplicação, não é semântico, eu acredito que sua concepção seja unica e excluisivamente para se trabalhar com dados, para que ele seja uma interface de comunicação entre plataformas diferentes, e não para design. A proposta do Flex é realmente louvável, mas melhor seria se uma liguagem fosse criada para ele, ou até mesmo o uso do ActionScript seria interessante. Uma forma de se fazer isso que eu digo e que achei interessante é do JavaFX. Outra proposta muito interessante, mas que não tem muito “marketing”, e seguindo minha lógica, peca quanto ao uso do XML é o XUL, da fundação Mozilla. |
|
|
A, e um questionamento. A sintaxe do Ruby é bem diferente da do Java, não segue o padrão ECMA. Esta sintaxe também não é de seu agrado? |
|
|
Olá. Sou desenvolvedor a 15 anos Entregando a idade, eu também. e desde aquela época em que poucos sabiam o que era a internet Nem tinha por aqui né, o lance era BBS. :-) o grande sonho eram as linguagens de programação que permitiriam trazer para a realidade telas, efeitos e interfaces só imaginadas nos livros e filmes de ficção ciêntifica. Ei, já tinhamos, era C. Ainda é a “mãe” das outras que temos hoje em dia. Se era mais ou menos difícil escrever as interfaces, aí é outra história, mas que já tinhamos linguagens, isso já. Talvez não tivessémos era hardware. Não, com certeza não tínhamos hardware. Era muito difícil abrir o editor para escrever em mumps, assembler, cobol, rpg, jcl ou c. A gente começa a divergir aqui. Eu sempre gostei de editar código nos editores, mesmo que na época fosse o edit do DOS. Tá, chutei o balde com esse. :-) E em “plataforma baixa” (como se falava dos pcs) desenvolviam em basic, dbase, clipper e pascal. Ê Cripão véio de guerra! Com a entrada do windows algumas linguagens novas surgiam com conceito RAD como SqlWindows, power builder, visual basic, delphi e nascia o caminho para se chegar aquele sonho das interfaces maravilhosas. Me permita discordar em chamar por exemplo Visual Basic e Delphi de “linguagens”. Para mim eles são mais é “produtos”. O sonho RIA chegou e todos olharam para o flex em sua ideía de usar o xml para arrumar a programação das telas Talvez seja “estruturação” ao invés de “programação” … Mas por que a sintaxe das linguagens complementares ficou tão ruim? Por que não evoluiu? Por que quase todas as linguagens agora seguem a aparência do c++ e java. Eu sou o cara mais suspeito do mundo em falar isso, mas Ruby com certeza tem um enfoque diferente. Na minha opinião destruiriam completamente a orientação a objetos e seus beneficios. Algumas sim, outras não. Tem algumas que colapsaram sob o próprio peso da idéia e do status. Escrever um programa hoje é muito complicado e muito bagunçado é um festival de arquivos de diretórios e se escreve muito pra se ter muito pouco. Me permita discordar novamente nesse ponto. Uma aplicação Rails hoje, ainda mais se você utilizar os scaffolds, tem muito pouco código escrito e ainda mantém a sua organização. Sim, há vários arquivos e diretórios mas tudo bem organizado. E o retorno do pouco que se escreveu IMHO é muita funcionalidade. E ao invés de se evoluir para isso partimos para geradores automaticos para esta bagunça toda. Vide os scaffolds citados acima. Mas e na hora da manutenção? Gerar o codigo é ótimo mas e colocar novas instruções ou sair o desenvolvedor e outro ser contratado e assumir a bagunça. Se você estiver falando daquelas ferramentas de “quarta geração” que permitem o cara gerar código e empacotam o dito cujo de uma maneira que fica melhor jogar tudo fora e fazer de novo quando precisa alterar algo, eu concordo. É aquele tipo de ferramenta “crie um programa sem escrever código”. Desculpem realmente a franqueza, mas se o cara quiser desesperadamente chegar em um nível desse e ainda achar bom, nesse caso poderia era ser verdureiro e não programador, pois não está interessado em código patavina nenhuma. E ainda mais se for uma ferramenta proprietária que leva o seu negócio junto quando o dono da empresa resolver virar monge no Tibet. Se você se refere ao Rails (por exemplo, ou qualquer ferramenta que te dê o código-fonte em arquivos texto, ou seja, matéria-prima bruta) se o primeiro desenvolvedor fez uma bagunça tremenda com o que foi disponibilizado para ele a culpa não é da ferramenta, e se o primeiro deixou tudo organizado e o segundo não consegue entender o que tem ali, ele não deveria ser contratado. temos um dado numa tabela num banco de dados se o caminho entre este dado e a tela do usuário e o o retorno da tela do usuário até novamente esta tabela quantos de código você precisa escrever? A não ser que você entupa o banco com SPs com regras de validação e o diabo a quatro (o que eu acho horrível), você tem que escrever código para validar o que está sendo manipulado no banco. Com o ActiveRecord você escreve muito pouco para fazer algumas validações consistentes. Acho que poderiamos abrir um editor rad e perder menos tempo programando coisas inuteis e poderiamos realmente programar para resolver logicas de negocio e reduzir tempo e esforço desnecessário e ganhar produtividade. Não precisa de um editor RAD. Como citei, você pode abrir com um editor de textos normal os seus modelos, controllers e views e inserir algumas lógicas ali. É produtivo. E produtividade é uma questão muito relativa, assim como o que é encarado como coisa inútil ou não. Eu vivo feliz da vida e posso te garantir que sob a minha ótica eu sou um cara produtivo usando o Vim. Sim, sério. O próprio Vim depois que você aprende a mexer legal e instala uns plugins até se parece com alguns RAD’s no sentido convencional da coisa. Apesar de estar na mesma área, muita gente tem opiniões bem distintas sobre isso. Eu pessoalmente não sinto falta alguma de ferramentas RAD e GUI, mas isso é questão de gosto. Afinal, vemos bastante gente hoje em dia desenvolvendo com RoR e Vim/Emacs/Textmate e alguns outros usando GUIs para a mesma coisa. A produtividade deve ser como a beleza, está nos olhos de quem a vê, em um certo sentido. E sobre as coisas inúteis, depende de cada um também. Você pode não ter saco para fazer o que eu faço e vice-versa. Mas em IMHO ainda temos que sujar as mãos com código “bruto”, mesmo que seja para aprender melhor o que está sendo feito nos níveis mais “altos”. |
|
|
Obrigado Pessoal, muito bacana as respostas de vocês. po Taq tenho só 33 anos ;-) no meu dia a dia eu programo no sqlwindows e stored procedures (isso mesmo qual o problema?qual que é? ;-) Hoje não programo para web. Mas eu quero mudar. Quero evoluir. Não tem mais espaço no mercado para esta tecnologia que já uso a 10 anos. E foi justamente durante o processo de escolha de outra que a comparação e a decepção surgiu. Desculpem mais foi a minha impressão. o sqlwindows é um ambiente todo hierarquizado (igual a um xml +/-) então para criar uma função, uma classe, declarar variavel, etc.. tudo tem seu lugar é uma linguagem antiga mas muito bacana e que torna tudo mais fácil para o programador. por isso ( marcelo ) achei grande sacada do flex usar xml para estruturar a bagunça. e veja que a ms ja copiou neste tal wpf copia escarrada a adobe não pode processar a ms? eu gostaria de poder mostrar a vocês para vocês entenderem e compararem. a 9 anos atras fui contratado pela minha empresa atual e tive uma missao de criar um sistema gerencial para a empresa usando esta tecnologia sqlwindows. nos 4 primeiros meses a minha missão foi criar um framework onde todos os demais programadores usariam as classes deste framework para criar as telas, relatórios etc… e o desafio foi maior pois alem disso eram pessoas vindo da “plataforma alta” com muito pouco entendimento de orientação a objetos. bom me baseei então no seguinte conceito deixar todas as operações comuns dentro do framework. o trabalho do cara seria desenhar a tela da forma que ele quisesse apenas usando os componentes (forms, botoes, grids, radio butons, check etc…) derivados das classes do framework e ele partia de um template que já o include da lib do framework e ja possuia a mdi, login , funções genericas, variaveis globais, contantes, objetos genericos etc… Agora imagine um tela com um grid 4 colunas para manutenção de uma tabela no banco de dados na mdi já tem todos os botões de incluir excluir alterar imprimir visualizar copiar colar exportar/importar para excel etc… funcionando direto pelo framework ele ja identifica a tela ativa e envia as mensagens correSpondentes para ela e podem ter quantas telas abertas ao mesmo tempo claro. ai o cara completa só criando um menu para chamar este form novo criado e ja compila e executa pronto uma tela de manutenção e consulta pronta pra ir para a produção onde ele só teve o trabalho de desenhar e dizer via metodos qual a tabela e colunas do banco de dados ele deseja mostrar em qual componente. todo o resto do trabalho sujo está por tras sendo feito pelo framework ( gerar os comandos sql, enviar para o servidor, tratar os erros, loop no grid ou nos campos lendo quem são pra onde vão etc…) parece simples mas agora pare e pense por ter sido feito assim você tem o poder do IF e hide/show dos componentes para fazer o diabo com isso. não entenderam. então coloque dois radio buttons na tela e if rb_um marcado troca o seta_table pra outra tabela e as colunas para outras colunas pronto com um forma vc ja maniputa 2 tabelas ou consulta diversas criando uma combo ou abas ou treeview ou check boxes de seleções ( consultas com group by diversos todos gerados automaticamente ) ou altere o seta_from nossa como me alonguei, em suma grande parte da minha frustração é com java e ms que são os dominantes no mercado e por eu ter que recomeçar novamente em outra linguagem reinventando tudo que construi em 10 anos programando profissionalmente e que para parametros de hoje no caminho que as linguagens tomaram eu acho que foi pelo caminho mais dificil. muito bom poder desabafar com vocês obrigado Luc |
|
|
bom, eu tou aí na luta com o código há quase 10 anos ;) . E [comentei sobre o padrão ecma](http://devlog.waltercruz.com/engessamento-conceitual): eu gosto dele como é hoje. Gosto do fato dele ser diferente: pra mim, não há mérito nenhum nele se tornar uma ‘linguagem orientada a objetos’ como as outras. Isso sim pra mim é um tipo de involução. |
|
|
begin IMHO
Avançando um pouco, passado as contribuições de Blaise Pascal… temos a máquina de Charles Babbage de calcular diferenças, baseado nos postulados de Leibniz, pois a representação binária é mais fácil para cálculos algébricos bit-a-bit e depois a conversão do resultado para decimal. Ada Lovelace com tesão na máquina de Charles(Baggages’s Analytical Engine ou Machine) e com base em outros trabalhos publicados criou o primeiro algoritmo-computacional exeqüível da história. Mas qual a linguagem que ela usou? “A linguagem do furo”, um furo 1 e um não-furo 0, papel perfurado mesmo; que depois foi chamado de “cartão perfurado”. Observe que temos um
O pensamento do programador tem que se adequar a formalidade dos furos. Avançando um pouco… começamos a “escrever” ao invés de furar, algo revolucionário, a formalidade para de ser radical e converge em vários paradigmas cada qual com sua gramática formal específica para cada máquina/compilador. A abstração dos paradigmas segue arbitrariamente ou não dependendo de quem ou o que o concebe. Alguns tentam imitar as máquinas, outros abstrair para o mundo real, outros basta funcionar… Sei e concordo como Dijkstra: a linguagem computacional tem que ter um “formalidade”, sintática semântica e lexica… mas o caminho da formalidade não obedece a tendência de uma língua, entenda língua aqui como o fator social da linguagem, evolutiva e cuja gramática diz como a língua deve ser e não como ela realmente é, exemplo: Na minha cidade vc pode dizer “ôncótô” que entendemos como “onde estou”, a mensagem é passada para o cérebro que identifica estatisticamente a acústica simbólica da expressão “ôncótô” e em um processo de semiose o significante é casado como “onde estou”. A linguagem humana é muito complexa e é limitada pelos sentidos(os 5 mesmos). Pensamos na maioria das vezes em palavras que “representam” as idéias mas podemos usar a mão, o pé e outros para este fim. Temos que formalizar a organização dos símbolos para que a idéia aqui na minha cabeça seja interpretadas por vc aí do outro lado, uma sintaxe comum, ortografia comum e semântica comum. Problemas computacionalmente resolvíeis necessitam de instruções inteligíveis ao processador, “clichêrmente” zeros e uns. Sempre uma linguagem está para abstrair a forma de resolver este problema. A sintaxe para mim é uma forma de limitar este pensamento e atrapalhar a solução, que em Ruby Matz procupou em elevar o nível da sintaxe com base em outras linguagens e corrobora com a idéia de “os computadores que nos entendam, eles que são os escravos”. Um exemplo simplista é a clássica condicional if. “Ontem choveu então molhou” e “Choveu ontem então molhou” são expressões equivalentes, em um processo de inferência teriamos em Ruby: if ontem == :choveu then :molhou end ou :molhou if ontem == :choveu Estou me especializando em neurociência e psicánalise, estou lendo vários artigos sobre lingüística, semiótica, cognição, pedagogia e comunicação neurológica. Então pense em um ambiente(pode ser uma IDE) onde vc pensa em uma atribuição e os valores automaticamente se associam. Pode ser viajem mas os chips
Temos que evoluir o nosso input interface-homem-máquina; penso que historicamente algo neste fluxo. Cartão perfurado → Códigos/Linguagem computacional → Matriz de neurôniosend IMHO |
|
|
kctada! Clap Clap Clap!!! |
|
|
Fazia muito tempo que eu não lia nada tão inspirador, nem nada que me fizesse pensar na evolução das linguagens de programação. Obrigado Shairon. Clap Clap Clap!!! 2 |
|
|
Posso andar contigo no recreio? |
|
|
Ufa! Moço, eu já estava ficando preocupado achando que você estava fazendo uso de alguma substância psicotrópica, pelo nível de detalhamento e, digamos, “viagem” da resposta, não que esteja errada em algum ponto, de forma alguma, por favor. Fiquei mais tranquilo sobre a sua resposta com o parágrafo acima que justifica o nível altamente inspirado que você está. :-) |
|
|
heheheheh |
|
|
Putz! O off-topic é uma das coisas que me fazem sempre ficar de olho por aqui. Ótima thread. Parabéns bem a galera que participou. ;) |
|
|
Sempre gostei de neurociência =D |
|
|
Nossa…. encontrei mais um que com com certeza gosta do livro “O 12º Planeta” de Zecharia Sitchin Depois de ler uma resposta dessas do Toledo San me deu vontade de reler o livro citado. Alguém mais já leu e curte? eu tenho um problema com este livro que nunca consigo terminar de ler sempre acontece algum “evento” que me tira da leitura, acho que algo maior esta me impedindo de descobrir algo e parece que o toledo já descobriu ;-) Acho que a verdadeira linguagem sempre foi a linguagem dos video games eles sim captam de forma correta nossas intenções, vontades e interação enquanto interface de comunicação homem maquina. mesmo o velho atari conseguia isso. pois a interface mostrava suas possibilidades e alternativas e era justa para o que oferecia conseguindo realizar o objetivo proposto. Os video games passaram um tempo acho que contaminados pela “PCtização” mas acho que agora após o marco nintendo Wii voltaram para a linha correta de interfaces homano computador. nossas linguagens deveriam aprender a lição dos videogames e se transformarem num “joystick” nos levando a criar o que realmente é necessário |

