frequentemente me pergunto, também, o que será programação quando o
que fazemos (ou a forma com que fazemos) for considerado obsoleto.
> Tirando um pouco da brincadeira, me parece que 99% do que fazemos--e nisso
> eu incluo todos os sistemas de grande porte que eu já escrevi e todos sobre
> os quais já ouvi falar, que vão muito além, é claro--são brincadeira de
> criança perto das necessidades futuras que temos.
> Eu tenho cá comigo que grande parte do que não temos pode ser traçado na
> base nessa falta tecnológica. Por exemplo, micro-payments, secure
> environments, consensual environments, web semântica, sistemas de
> diagnóstico médico, e por aí vai. Arquiteturalmente, todos esses sistemas
> são passíveis de descrição. Programaticamente, nem tanto.
Talvez eu esteja pensando algo similar. Em geral, eu procuro imaginar
cenários que coloquem em perspectiva e me convençam de que o nosso
trabalho, atualmente, é primitivo e antiquado. Colocando nestes termos
e olhando ao redor, me parece que os softwares atuais (e a forma como
nós desenvolvemos) são exercícios rápidos e descartáveis. Creio que
estamos tateando, procurando entender aquilo que fazemos e aquilo que
criamos.
com isso, penso que os sistemas que escrevemos hoje são castelinhos de areia:
* não escalam - sua capacidade de crescer é altamente minada
* não toleram diversas abordagens de mudanças
* são extremamente frágeis
* daí, são efêmeros e descartáveis
Acho que a seguinte apresentação de Richard P. Gabriel é bastante
relevante aqui:
Architectures of extraordinarily large, self-sustaining systems
http://www.infoq.com/presentations/arch-extraordinarily-large-systems
> Pegando carona na citação do OMeta, pelo Thiago, me ocorre que há uma linha
> bem clara em que as features que vemos nas linguagens começam a quebrar para
> certos padrões de desenvolvimento. Quem escreve o código que escreve o
> código, em outras palavras.
Poderia comentar mais sobre isso?
> Eu ainda não acredito em silver bullets, mas fico pensando em qual será o
> próximo passo; qual a próxima transformação.
> Há algo nas linguagens atuais e que estão sendo desenvolvidas que já aponte
> algum caminho?
fazendo justiça ao meu bias, eu apontaria três trabalhos que me chamam
atenção (talvez eu tenha outras coisas interessantes entre os meus
diretórios, mas meu sono me impede de reunir mais material):
* implementação da pilha TCP/IP em uma DSL
http://blog.rafaelferreira.net/2008/04/couple-of-interesting-dsls.html
* A linguagem JOHN
http://www.vpri.org/pdf/rn2008003_john.pdf
* Programming as Planning
http://www.vpri.org/pdf/m2009001_prog_as.pdf
Ainda não estou certo de que estes trabalhos apontem um caminho. Mas,
diferente dos demais progressos em PL, estes são provocativos o
suficiente para estimular a investigação de outros (e novos) pontos de
vista.
[]'s
--
Thiago Silva
Computer Science
M.Sc. Candidate at Federal University of Pernambuco
jabber/gtalk: tsi...@jabber-br.org
http://blog.sourcecraft.info
O que imagino nesse cenário é que programar as ferramentas vai ser a
parte mais importante e mais comum. Mais do que cadastros, serão
construídas DSLs e linguagens pra lidar com a vasta gama de sensores e
funções e aparelhos diferentes.
Nada novo, mas o que me preocupa é a mão-de-obra. A maioria das
"faculdades" de computação ensinam a utilizar ferramentas, e não a
criar. Acho que a tecnologia pra esse cenário de computação invisível
não está longe, mas será que teremos mão de obra pra lidar com isso?
Uma diferença ainda maior entre o top-tier e o bottom-tier?
(Ex. dessa cultura estranha nas faculdades: Prof. passou um projeto de
escrever um pequeno compilador. Maior preocupação de um grupo? Não
estavam conseguindo usar o clica e arrasta do Netbeans pra fazer a
interface).
Lendo essas referências que vocês passaram e vendo esses nomes
citados, sinto que eu estou alguns anos luz atrás de vocês e perdido
sem saber direito por onde começar, então perdoem (e corrijam)
qualquer baboseira imensa que eu falei. =)
Só pra não passar em branco :)
Elomar França
elo...@maisweb.org
twitter.com/elomar
+55 84 8855-0248
Talvez relacionado a isso, não sei, mas recentemente tive uma conversa
com silvio meira em que ele disse "2, 8, 90: duas pessoas escrevem,
oito comentam, noventa leem [de cada 100 pessoas]". Isso me chamou a
atenção pois, na conversa, eu estava insistindo na idéia de que
usuários são autores (e vice-versa). Mas não sei de onde vem o
conhecimento destes números, de que forma foi observado, nem o que
significa na dimensão social.
Voltando às classes de programadores, eu não sei se existe um aspecto
social limitante, mas acredito que existe um forte aspecto tecnologico
que influencia a percepção, capacidade e desenvoltura destas classes.
> 2) Será que vai chegar um ponto em que não vamos conseguir mais escrever determinadas classes de código e vamos precisar de ferramentas especiais que fazer isso. O passado parece indicar que sim: sempre foi mais fácil escrever parsers/lexers em ferramentas que geram isso embora o código final seja virtualmente incompreensível
> (a base, claro, é compreensível por servir como DSL). Mas será que vai
> chegar um ponto em que isso para de ser verdade e vamos precisar de sistemas
> semânticos mais fortes para resolver certos problemas?
>
Eu estava escrevendo um longo comentário sobre isso até notar que eu
não entendi o que vc está querendo dizer :)
Está supondo que podemos chegar num ponto em que seremos *incapazes*
de escrever determinados algoritmos?
Tem gente que acredita que os hackers vão dominar o mundo (os novos
sacerdotes, aqueles que sabem "ler e escrever" na nossa era). Eu
acredito que, de alguma forma, talvez as pessoas comuns possam
aprender a conversar com seus dispositivos (e não me refiro, aqui, a
meramente "usá-lo"). Mas não acredito que isso se realizará ensinando
Java no segundo grau.
Acho que, para muitos, a programação sairia desse primitivismo e se
tornaria diálogo/negociação com máquinas (ou seja, IA).
Acho que outra vertente seria termos os ultra-large self-sustaning
systems onde teriamos estas coisas vivas e ubíquas, e
estudariamos/programariamos seus "órgãos" (a versão madura da criança
que chamamos hoje de "componentes"). Hoje, criamos as coisas
repetidamente ("reuso" ainda está na idade fetal, a começar pelo seu
próprio termo: "reuso" - IMHO). Talvez, amanhã, estaremos estudando e
"programando" "orgãos" que evoluem naturalmente....
De qualquer forma, eu acho que sistemas biológicos e tecnológicos
serão bastante parecidos em algum momento....não vejo outra tendência.
Por isso que estou convencido que o marco zero é fazer softwares que
não param e são modificados enquanto rodam. Sem isso, a gente vai
ficar aqui brincando de detonar prédios e construí-los novamente, sem
nunca chegar no céu (eis meus 2 centavos).
Acho que não (seremos obsoletos). Em certo sentido, somos todos
programadores, criando e configurando o mundo ao redor. Mas no nosso
caso (o codeiro), especificamente, acho que o ponto todo das máquinas
é ter alguém para configurá-las e dizer-lhes o que fazer. Esse é o
programador, seja codando, seja dizendo o que quer, e ver o que ele
pediu se manifestar automaticamente.
<caminhando-nas-nuvens>
Se IA amadurecer pra valer, as máquinas com IA deixarão de ser simples
máquinas e serão outros seres com quem teremos que lidar. Se elas
estarão à nosso serviço, então acho que a figura do programador some,
se tornando uno com a figura do usuário (aquele que vive pedindo, e
tendo alguém que faça o trabalho sujo) - a programação volta a ser
ensinar/ordenar. Se elas não estiverem a nosso serviço, iremos
construir máquinas sem IA, pra fazer o que as que tem IA não fazem por
nós.
Sem IA amadurecida como inteligência real, acho que a figura do ser
humano configurando/programando o ambiente (a rede, o mundo virtual, o
computador) será sempre necessária. Pessoas são necessarias para
transmitir objetivos/regras/etc para que as máquinas realizem. E como
objetivos/regras/etc mudam nas pessoas, na sociedade, este papel é
sempre necessario. Ou pelo menos, será sempre necessario até que algum
ponto meta-estável seja atingido na sociedade.
</caminhando-nas-nuvens>
Sobre os códigos, eu acho que eles já nascem fadados à sepultura (os
meus, pelo menos), assim como gols feitos em partidas amistosas e
treinos não servem à pontuação alguma. São exercícios, creio....e eu
lido isso vendo justamente desta forma.
Concordo.
> Já repararam como estamos reinventando a mesma coisa desde
> mil-novecentos-e-vovó-gostosa? Ruby é um Smalltalk "a la" script.
> Closures, tão acaloradamente debatidos no Java, estão aí fazem
> décadas, Máquinas vituais? Vixi. Garbage collector?... e por aí vai.
>
Eu levantei isso outro dia numa discussão com meu orientador. A
resposta recorrente foi: mercado. mercado. mercado.
No FISL, levantei de novo a questão numa mesa de restaurante. Me
pergunto até que ponto a força que o mercado aplica na escolha das
ferramentas e abordagens de desenvolvimento (que, como sabemos, não
equivalem ao estado da arte nem no cheiro) não enterram a si mesmo e a
sociedade? Alguns acham que a coisa se auto regula, cedo ou tarde.
Outros acham que isso é irrelevante. Mas, afinal, este fenômeno, estes
acidentes, retardam o progresso ou são apenas mecanismos que a
sociedade utiliza para ter tempo de absorver novas tecnologias?
Recentemente, numa entrevista com dan ingalls (engenheiro de diversas
máquinas virtuais Smalltalk), randal schwartz disse que conversou com
Woz e perguntou por que os produtos da apple na época (Lisa, etc) não
tinham o SO em smalltalk. Pelo que lembro, ele respondeu que teriam
que escrever o SO do zero, e o hardware não era rápido o suficiente. O
resultado, no podcast, foi uma surpresa enorme, e um monte de "what
if" nostálgicos.
what if?
> Alguém, acho que o Paul Graham (papa de LISP), disse que quanto mais
> as linguagens evoluem, mais "features" do LISP elas implementam. :D
> Acho que ele tem razão, qdo chegarmos no ponto que os caras estavam em
> idos de 1960, aí quem sabe comecem a aparecer evoluções de verdade que
> capacitem a gente a fazer essas traquitanas tecnológicas todas
> funcionarem como os autores dos livros de ficção esperem que funcionem
> :)
>
> Mas, tirando as observações sacártiscas, eu apontaria que o futuro são
> linguagens declarativas, como SQL e Prolog, onde você diz "o quê"
> quer, não "como" vai fazer. E isso tem um potencial sem limite.
>
O que me lembra. No paper de J.C.R Licklider "Man Computer Symbiosis"
(que, a propósito, acho que é extremamente relevante para esta
discussão), ele diz que as pessoas pensam melhor em termos de
objetivos do que em termos de instruções. Alan Kay sabia disso e, até
onde sei, a noção que ele tem de programação considera esta faceta.
> Na marcha em que redescobrimos LISP, ainda vai uns 10 ou 15 anos para
> chegarmos em 1960, Prolog é de 72, são mais uns 15 anos, com sorte.
> Para evoluir o Prolog para algo útil... noves fora, chuto que daqui
> uns 40 anos vamos ter a resposta do Ronaldo :)
>
Amém
Vou tentar comentar esta pergunta em duas vertentes: uma sobre o ato
de programar, e outra sobre organização/design de sistemas.
Para começar, eis como vejo a nossa tragédia em 4 observações óbvias:
1) Estamos continuamente construindo software (ou seja, assumimos que
esta tarefa não tem fim) para atender um fluxo contínuo de demandas
desconhecidas;
2) Seja lá o que formos construir, temos que partir de um design inicial;
3) Cada peça que adicionamos ao software torna o design que escolhemos
mais denso;
4) Como estamos continuamente atendendo demandas desconhecidas, cedo
ou tarde, uma nova demanda muda a nossa percepção que, por
consequência, nos leva a considerar inapropriado o design escolhido.
Claro que estou considerando aqui a construção de softwares cujas
demandas satisfazem o item 1 (nem todos os softwares possuem demandas
desconhecidas).
Minha opnião sobre o ponto fundamental de atrito da atividade de
desenvolvimento é: como mudar de idéia aqui (na mente), mudando de
idéia ali (no software) sem passar pelo inferno que passamos há
decadas? A turma do Alan Kay defende late binding agressivo se
sustentando justamente no fato de que não sabemos desenvolver
softwares - daí precisarmos de mecanismos que nos permitem mudar de
idéia de forma mais sofisticada. Ainda, como o Ronie apontou,
trabalhar especificando objetivos nos dá uma margem mais interessante,
e talvez este tipo de problema diminua ou, quem sabe, desapareça
mudando apenas a abordagem.
E isso me leva à outras questões: até que ponto conseguiremos entender
os programas que estarão rodando? Até que ponto seremos capazes de
traçar e verificar se sua execução é correta? Até que ponto isso é
desejável?
Agora, com computadores quânticos ou não, eu acho que estes problemas
permanecem. Claro, teremos maior poder de processamento. Mas já temos
hoje um certo tanto e, no entanto, não utilizamos. Se teremos muito,
muito mais amanhã, ok, talvez determinados algoritmos saiam do campo
impraticável. Mas eu não sei até que ponto o poder de processamento
(ou o tipo de algoritmos que poderemos utilizar) iluminará soluções
para os problemas mencionados acima. O problema, ao meu ver, não é
hardware, mas sim, nosso entendimento sobre a criação e evolução de
*sistemas*.
Daí a segunda vertente: escrever código que vai pro saco daqui há uns
anos todos nós escrevemos. Como criar e organizar sistemas pervasivos
que evoluem e escalam? Eu imagino que, ou a coisa toda se tornará uma
caixa preta auto-sustentável que configuramos apenas dizendo o que
queremos (e não, como fazer), ou temos que levantar as mangas para
entrar no sistema, e isso, acredito eu, necessariamente exige que ele
seja entendível em diversos "níveis", que possua várias dimensões de
interação, navegação e programação; que possa ser experimentado e
investigado de forma segura, sem quebrar....enfim, só sei que arquivos
fontes e diretórios não dão conta do recado =P
Ah, com certeza. Para mim, o legal nessa discussão é especular
justamente sobre as variações--ver os pontos de vistas individuais,
modos como cada um programa, e ver o que pode sair. Pelo que vejo, de
todos nós, o único fazendo algo realmente fora da curva usual de
desenvolvimento é o Thiago.
Eu tenho que confessar que essa discussão é um bálsamo off-work para
mim. Ultimamente meu mundo tem consistindo mais em liderar três
gerências distintas de arquitetura, engenharia e pesquisa de software
deixando--infelizmente--muito pouco tempo para código. :(
Abraços,
R.
Ou não. Talvez isso seja o mais fácil e o difícil realmente seja
controlar as preferências distintas das cinco pessoas que vivem
naquela cada e manter um mapa heurístico de disponibilidade.
Provavelmente possível com o que temos hoje, claro. Mas do lado do
supermercado pode não ser tão trivial. :)
> Talvez a gramática seja algo muito extenso e a simplificação dele seja
> algo muito complexo. Se pegar uma linguagem com J, temos verbos,
> advérbios e, um é uma coisa (ou pode ser diferente dependendo do que
> vem antes e depois mas juntando os dois temos outra coisa. O resultado
> é que fica algo difícil de ler e entender facilmente.
Com certeza. Se pensarmos no que já foi falado na thread sobre
permitir que os próprios usuários programem (viva o LCARS), alguma
coisa mais interessante e complexa pode ser necessária com uma
interface gramatical transparente.
> Será que a DSL não foi feita apenas para o programador resolver a
> tarefa? Acho que se for para o usuário, ele deveria criar a DSL e o
> programador implementar.
Geralmente sim, é feita para programadores. O converso é sempre um
pouco mais complicado e suscetível a erros esdrúxulos.
R.
2009/7/3 Rodrigo Kumpera <kum...@gmail.com>:
> Apesar de achar oque o pessoal do VRPI está fazendo muito
> interessante,
> eu acredito não acho que qualquer coisa de realmente revolucionário
> irá sair
> de lá. Meus ovos estão na cesta do Simon Peyton-Jones e seus
> comparsas.
Por que seus ovos estão (estariam) nesta turma?
> Dito isso, eu vejo que o maior problema hoje não está nas linguagens
> de programação em si, mas no ambiente no qual
> elas executam. São frágeis, simplórios e desprovido de qualquer forma
> de inovação. Basta ver que em 20 anos se produziu
> somente uma VM não convencional, a do Erlang, o resto todo é sempre
> uma variação sobre o mesmo tema.
>
> Porém como podemos esperar que alguém inove no universo dos ambientes
> de execução quando custa muitos anos homem
> para se produzir um sofisticado o suficiente para uso em produção.
> Ninguém ainda conseguiu produzir, do zero, uma VM inteira
> com escala industrial com menos de 100 anos/homem.
>
Me pergunto qual o papel, neste custo, do "ambiente frágil" subjacente
utilizado no desenvolvimento das VMs....
> Ou seja, enquanto produtizar o trabalho de um doutorado nessa área
> continuar custando coisa de 10milhões de dólares e vários
> anos, nada vai mudar.
>
> Essa é minha opinião, em vez de criarem mil LISPs e 500 smalltalks,
> matem somente um C que o resto vem sozinho.
>
E como ocupar o espaço de C? BitC [1] ? COLA [2]?
A propósito, acho que é a terceira vez que vejo vc levantar estes
pontos....o que falta para vc cansar e procurar matar o C com as
próprias mãos? ;)
[1] - http://www.bitc-lang.org/
[2] - http://piumarta.com/software/cola/
Também concordo que esse é o ouro na discussão. Mas, a titulo de
esclarecimento, eu não estou fazendo nada fora da curva usual. Melhor
dizendo, eu não estou fazendo nada, além de estudar. Eu tenho uma
ótima oportunidade de fazer coisas insanas por estar no mestrado mas
minha capacidade e habilidade impõem um certo limite naquilo que sou
capaz de fazer no momento.
> Eu tenho que confessar que essa discussão é um bálsamo off-work para
> mim. Ultimamente meu mundo tem consistindo mais em liderar três
> gerências distintas de arquitetura, engenharia e pesquisa de software
> deixando--infelizmente--muito pouco tempo para código. :(
>
> Abraços,
>
> R.
Devemos esse espaço a você, cara :)
Tarde, mas em tempo:
It's a curious thing about our industry: not only do we not learn from
our mistakes, we also don't learn from our successes.
-- Keith Braithwaite
que legal ver o kumpera aqui :)
> Apesar de achar oque o pessoal do VRPI está fazendo muitoPor que seus ovos estão (estariam) nesta turma?
> interessante,
> eu acredito não acho que qualquer coisa de realmente revolucionário
> irá sair
> de lá. Meus ovos estão na cesta do Simon Peyton-Jones e seus
> comparsas.
Me pergunto qual o papel, neste custo, do "ambiente frágil" subjacente
> Dito isso, eu vejo que o maior problema hoje não está nas linguagens
> de programação em si, mas no ambiente no qual
> elas executam. São frágeis, simplórios e desprovido de qualquer forma
> de inovação. Basta ver que em 20 anos se produziu
> somente uma VM não convencional, a do Erlang, o resto todo é sempre
> uma variação sobre o mesmo tema.
>
> Porém como podemos esperar que alguém inove no universo dos ambientes
> de execução quando custa muitos anos homem
> para se produzir um sofisticado o suficiente para uso em produção.
> Ninguém ainda conseguiu produzir, do zero, uma VM inteira
> com escala industrial com menos de 100 anos/homem.
>
utilizado no desenvolvimento das VMs....
E como ocupar o espaço de C? BitC [1] ? COLA [2]?
> Ou seja, enquanto produtizar o trabalho de um doutorado nessa área
> continuar custando coisa de 10milhões de dólares e vários
> anos, nada vai mudar.
>
> Essa é minha opinião, em vez de criarem mil LISPs e 500 smalltalks,
> matem somente um C que o resto vem sozinho.
>
A propósito, acho que é a terceira vez que vejo vc levantar estes
pontos....o que falta para vc cansar e procurar matar o C com as
próprias mãos? ;)
Eu ainda não tive a oportunidade de conhecer sistemas de tipos mais
sofisticados. Reconheço os benefícios de inferêcia de tipos, mas sem
experiência, eu não saberia dizer como tudo isso se conjuga durante a
evolução de um sistema - ou seja, se a minha habilidade de
experimentar interações não previstas acaba sendo minada, de alguma
forma, pelos tipos definidos, e como isso se dá.
>> Me pergunto qual o papel, neste custo, do "ambiente frágil" subjacente
>> utilizado no desenvolvimento das VMs....
>
> Provavelmente enorme. O ferramental vai de ruim a patético (iPhone), o SO é
> hostil
> e a linguagens disponíveis são um desastre.
>
> Não existe pesquisa aplicada p/ se avançar nesse problema e a principais
> iniciativas
> infelizmente girando em torno de sistemas meta-circulares, que ficam lindos
> em papers
> mas são uma enorme piada no mundo real.
>
>
O "infelizmente" é porque são uma piada no mundo real? Ou porque vc
não atribui mérito a meta-circularidade?
[]'s
2009/7/4 Rodrigo Kumpera <kum...@gmail.com>:
> Porque não acho que OO ou linguagens com tipagem latente tenham futuro.Eu ainda não tive a oportunidade de conhecer sistemas de tipos mais
> Haskell com um sistema de tipos baseados em teoria de categorias me parece
> muito mais concreto e promissor.
>
> Subtipagem e polimorfismo são coisas muito diferentes para serem misturados
> da forma como são nas maioria das linguagens OO.
>
> Além disso, tipagem latente é uma desastre quando falamos de qualquer forma
> de análise do sistema. Todos sistemas até hoje construídos são baseados em
> algorítmos otimistas, oque sempre gera resultados probabilísticos.
>
sofisticados. Reconheço os benefícios de inferêcia de tipos, mas sem
experiência, eu não saberia dizer como tudo isso se conjuga durante a
evolução de um sistema - ou seja, se a minha habilidade de
experimentar interações não previstas acaba sendo minada, de alguma
forma, pelos tipos definidos, e como isso se dá.
O "infelizmente" é porque são uma piada no mundo real? Ou porque vc
>> Me pergunto qual o papel, neste custo, do "ambiente frágil" subjacente
>> utilizado no desenvolvimento das VMs....
>
> Provavelmente enorme. O ferramental vai de ruim a patético (iPhone), o SO é
> hostil
> e a linguagens disponíveis são um desastre.
>
> Não existe pesquisa aplicada p/ se avançar nesse problema e a principais
> iniciativas
> infelizmente girando em torno de sistemas meta-circulares, que ficam lindos
> em papers
> mas são uma enorme piada no mundo real.
>
>
não atribui mérito a meta-circularidade?
> Ah, com certeza. Para mim, o legal nessa discussão é especular
> justamente sobre as variações--ver os pontos de vistas individuais,
> modos como cada um programa, e ver o que pode sair. Pelo que vejo, de
> todos nós, o único fazendo algo realmente fora da curva usual de
> desenvolvimento é o Thiago.
>
> Eu tenho que confessar que essa discussão é um bálsamo off-work para
> mim. Ultimamente meu mundo tem consistindo mais em liderar três
> gerências distintas de arquitetura, engenharia e pesquisa de software
> deixando--infelizmente--muito pouco tempo para código. :(
Agora pensei na tua atividade atual como um programador do
futuro. Especifica o que deseja e o programa inteligente faz o serviço
para ti. A diferença é que ainda necessitas de pessoas para a
programação. Em um futuro distante, poderias colocar um capacete e uma
máquina faria todo o serviço.
Eu tenho minhas recaídas futuro <-> passado. Hoje configurei o gnus
para conversar com o gmail e vou acompanhar a lista por ele. Ainda tem
alguns ajustes para fazer, mas espero que o meu próximo C-c C-c :-)
--
Guaracy Monteiro
- O -
A photograph is memory in the raw. ~Carrie Latet
Talvez num futuro não tão distante. Já existe uma área chamada
brain-computer interface:
http://en.wikipedia.org/wiki/Brain-computer_interface
Eis uma noticia recente:
http://www.readwriteweb.com/archives/twitter_thoughts.php
> Olhando para a história do desenvolvimento tecnológico (desde a pedra
> lascada, longe assim ;)) e abstraindo um monte de coisa alguém pode
> inferir que não há tanto atraso quanto reclamam. E que talvez o tempo
> de 100 anos/homem para produzir a primeira VM inteira em escala
> industrial seja um processo normal e, quem sabe, até acelerado. Quem
> sabe...me parece muito tempo também.
>
Aí eu pergunto como seria essa VM? Quais os benefícios? Seria interessante
para todos ou apenas uma parcela que necessita de recursos específicos?
> Quanto a grande influência das ferrementas, acredito que escrever, ou
> anotar, as idéias e compartilha-las, é mais importante do que procurar
> qual o melhor papel e a melhor caneta. Não retirando a importância e
> capacidade de influência da segunda parte.
>
Até porque ninguém escolhe o melhor. Seja por preço, por conhecimento ou
talvez, porque simplesmente não existe o melhor. Talvez exista o melhor
para determinada pessoa ou determinada tarefa. Qual o melhor SGBD? Editor
de textos? Sistema operacional? Linguagem de programação? Paradigma?
> Também acho que a forma atual da Academia sofre sérios problemas (como
> foi citado o alto custo financeiro e demora em um doutorado) mas
> deduzo disso que a morte de C (por uma bala de prata, talvez?) não
> seja a tal solução ideal. E será que títulos e pesquisas acadêmicas
> mais ágeis bastem para "todos" largarem o C?
>
Acredito que apenas pesquisas não sejam suficientes. É necessário que
toda a estrutura existente seja mudada e deve ser feito de forma gradual.
Se quando acordastes pela manhã tivesse uma manchete: "De hoje em
diante, todos os computadores usarão apenas DisritimixOS, que já vem
com o SGBD BananANSI e a linguagem HypeBasicTalk".
--
Guaracy Monteiro
http://fotomix.wordpress.com/
Philipe Farias escreveu:
> C é encarada como uma linguagem antiga e ultrapassada que serve comoPara mim, antigo não significa, necessariamente, ultrapassado. Para muitos,
> base para boa parte das linguagens ditas atuais e modernas, sendo essa
> uma grande falha ou desvantagem para o avanço computacional (o
> verdadeiro bug do milênio? hehe). Mas como saber que uma linguagem é
> antiga, o quê a torna antiga e ultrapassada? Quais são os problemas
> que C e seus descendentes não estão conseguindo resolver? Ou não
> conseguirão resolver? Caso resolver problemas seja a questão.
>
se a cor da moda é verde, tudo que foi feito em vermelho não presta mais
e deve
ser trocado. Acho que a base de tudo é o processador e seu set de
instruções. C
até pode ser a base de muitas coisas, mas só continua se quiserem. O
FreePascal
é feito em Pascal. Se alguém baixar os fontes do GHC, vai precisar de um GHC
para compilar. Eles até podem ter começado com C, mas não são mais. Quem
resolve alguma coisa é o processador e seus companheiros. Se C não premite
resolver alguma coisa, usa-se algo que resolva.
Chegando com alguns dias de atraso na discussão numa tentativa de
prolonga-la ainda mais (muitas idéias e referências interessantes!)
farei algumas perguntas (para as quais não possuo as respostas).
C é encarada como uma linguagem antiga e ultrapassada que serve como
base para boa parte das linguagens ditas atuais e modernas, sendo essa
uma grande falha ou desvantagem para o avanço computacional (o
verdadeiro bug do milênio? hehe). Mas como saber que uma linguagem é
antiga, o quê a torna antiga e ultrapassada? Quais são os problemas
que C e seus descendentes não estão conseguindo resolver? Ou não
conseguirão resolver? Caso resolver problemas seja a questão.
Olhando para a história do desenvolvimento tecnológico (desde a pedra
lascada, longe assim ;)) e abstraindo um monte de coisa alguém pode
inferir que não há tanto atraso quanto reclamam. E que talvez o tempo
de 100 anos/homem para produzir a primeira VM inteira em escala
industrial seja um processo normal e, quem sabe, até acelerado. Quem
sabe...me parece muito tempo também.
Oi Philipe! jóia! Vamos buscar respostas :)
> C é encarada como uma linguagem antiga e ultrapassada que serve como
> base para boa parte das linguagens ditas atuais e modernas, sendo essa
> uma grande falha ou desvantagem para o avanço computacional (o
> verdadeiro bug do milênio? hehe). Mas como saber que uma linguagem é
> antiga, o quê a torna antiga e ultrapassada?
>
C pode ser até encarada como uma linguagem antiga. Mas não acho que a
idade seja relevante. Uma linguagem (e qualquer coisa, provavelmente)
se torna ultrapassada quando suas características se tornam inferiores
em relação ao que se conhece em um dado momento.
> Quais são os problemas
> que C e seus descendentes não estão conseguindo resolver? Ou não
> conseguirão resolver? Caso resolver problemas seja a questão.
Nessa thread, acho que a problemática mais discutida tem sido a
criação de softwares corretos que são enormes/complexos e escalam.
> Olhando para a história do desenvolvimento tecnológico (desde a pedra
> lascada, longe assim ;)) e abstraindo um monte de coisa alguém pode
> inferir que não há tanto atraso quanto reclamam. E que talvez o tempo
> de 100 anos/homem para produzir a primeira VM inteira em escala
> industrial seja um processo normal e, quem sabe, até acelerado. Quem
> sabe...me parece muito tempo também.
Acho que o atraso é percebido por alguns ao se observar (correta ou
incorretamente) um _gap_ entre o que se conhece em estado da arte e a
tecnologia que se tem a disposição (e no que se trabalha sobre),
considerando-se que não há razões técnicas (não há trade-off) para a
escolha de uma abordagem considerada inferior. Mas se fosse só isso,
acho que não teriamos que nos preocupar. Eventualmente, talvez, a
abordagem considerada superior se sobresairia, enterrando as
inferiores. Mas isso não parece acontecer naturalmente.
Mesmo considerando o potencial maleável do software ("soft"), ainda
assim, certas escolhas acabam por definir compromissos fortes que
podem dificultar ou restringir avanços - veja o caso do browser/HTML.
Há quem considere também a influência da tecnologia na nossa percepção
(definindo mind-sets, status-quo, ...), o que talvez torne a questão
um pouco mais delicada.
> Também acho que a forma atual da Academia sofre sérios problemas (como
> foi citado o alto custo financeiro e demora em um doutorado) mas
> deduzo disso que a morte de C (por uma bala de prata, talvez?) não
> seja a tal solução ideal. E será que títulos e pesquisas acadêmicas
> mais ágeis bastem para "todos" largarem o C?
>
Não sei se a questão é se títulos e pesquisas são "ágeis" ou não
(talvez eu não tenha compreendido o que quis dizer). Mas, tirando do
topo da cabeça sem pensar muito, podemos obsevar que o que sai da
academia não é aditivamente aplicada à indústria. Talvez isso seja um
grande problema.
[]'s
Não sei se a questão é se títulos e pesquisas são "ágeis" ou não
(talvez eu não tenha compreendido o que quis dizer). Mas, tirando do
topo da cabeça sem pensar muito, podemos obsevar que o que sai da
academia não é aditivamente aplicada à indústria. Talvez isso seja um
grande problema.
Thiago,
Quanto ao último parágrafo recentemente vi uma paresentação
interessante (não das mais empolgantes btw) no InfoQ por Tony Hoare
(Sir "Quicksort"). Ele fala sobre as áreas de ciência da computação e
engenharia de software. Basicamente descreve o escopo e propósitos de
ambas e como se relacionam (ou deveriam se relacionar).
Pelo que entendi (ou lembro) a engenharia de software deve focar na
aplicação prática/indústria/mercado e possui uma visão a curto prazo
(os problemas de hoje). Enquanto a ciência da computação deve ter como
foco a pesquisa científica e possui uma visão a longo prazo (vários
anos, décadas talvez).