A linguagem de programação mais alucinante? [fechadas]


45

De uma linguagem de programação razoavelmente comum, qual você considera a mais alucinante?

Tenho escutado muitos podcasts de programação e demorado algum tempo para aprender algumas novas linguagens que estão sendo consideradas futuras e importantes. Não estou necessariamente falando sobre o BrainFuck , mas qual linguagem você considera uma que desafia os paradigmas comuns de programação?

Para mim, fiz alguns programas funcionais e lógicos (por exemplo, Prolog ) na década de 1990, então não posso dizer que encontro algo especial por lá.

Estou longe de ser um especialista nisso, mas até hoje a linguagem de programação mais alucinante para mim é o Perl . Não porque o "Hello World" é difícil de implementar, mas há tanta flexibilidade lexical que algumas das soluções mais difíceis podem ser decompostas de forma tão poética que eu tenho que sair do meu terminal para clarear a cabeça. Não estou dizendo que provavelmente venderia uma implementação comercial de software, apenas que há uma razão distinta pela qual o Perl é tão (in) famoso. Basta olhar para a lista básica de livros.

Então, qual é a sua linguagem alucinante que promove suas melhores práticas e programação ?


Não pode ser alucinante e apenas deixar por isso mesmo?

4
Qualquer idioma em que o espaço em branco seja importante!
mootinator

@mootinator - Mas o Python é realmente divertido de se trabalhar, desde que o seu editor de texto não cause dor.
rjzii

1
@Thorbjorn Alguém adicionará INTERCAL? O APL é um projeto do ensino médio, comparado com o grande pai.
Mark C

Perl está longe de ser o mais difícil. Tenho 12 anos e posso programar com facilidade o Perl.
Dynamic

Respostas:


73

APL

Esta linguagem é incrivelmente poderoso e muito concisa, ele irá prejudicar o seu cérebro.

Para iniciantes, é difícil usar sem um teclado personalizado ou pelo menos uma sobreposição de teclado para exibir todos os símbolos obscuros que ele usa.

Teclado APL

Então a linguagem é do paradigma baseado em vetor / array e é especializada em álgebra linear complexa. A versão original nem tinha construções de loop, tudo e qualquer coisa feita ao encadear operadores de matriz bastante incomuns.

  • strip_tags()qualquer pessoa? (emprestado da Wikipedia)

strip_tags () ala APL


18
+1 para mostrar o teclado
tcrosley

5
@tcrosley: É bom se você tem um real: wickensonline.co.uk/apl/unicomp-apl-top-large.jpg
Orbling

4
E, se já não era suficientemente perturbador, havia alguns operadores que exigiam o uso da tecla backspace / overstrike. Por exemplo, a matriz inversa era a caixa quadrada (sobre a tecla L) sobrecarregada com um sinal de divisão (o próximo à tecla backarrow no canto superior direito da imagem do teclado).
Tangurena 7/01/11

2
Estou tendo flashbacks no início dos anos 80, quando fiz APL para fazer análises de regressão estatística de alto nível, as pessoas ainda usam isso? Estremecer.
HLGEM

2
Eu fiz muitos APL uma vez - ele ainda tem um lugar nostálgico para mim ... eu amei na época.
quickly_now

56

Haskell . Está muito perto de ser puramente funcional, ao qual a maioria das pessoas não está acostumada; muito exigente, o que é útil quando você sabe o que está fazendo, mas frustrante até então; tem uma sintaxe bastante enigmática e altamente simbólica, o que é ótimo quando você a conhece, mas é opaca antes disso ... a lista continua.

Além disso, é simplesmente impossível formatar as coisas de uma maneira que pareça boa para mim.


7
Eu teria dito Haskell também, mas não porque é enigmático. Embora possa certamente ser difícil de entender, a coisa mais preocupante é a teoria por trás disso. Monad e Arrows ainda são um domínio que não conquistaram :)
Matthieu M.

11
Por que "muito perto de ser puramente funcional"? É puramente funcional.
dan_waterworth

4
Eu gostaria de me citar e acrescentar como Haskell irá dobrar sua mente: "Haskell impede que você jogue as coisas debaixo do tapete, obriga você a lidar com a estrutura do seu programa explicitamente e ensina uma linguagem para descrever essas estruturas : a linguagem dos tipos. Compreender os tipos, particularmente os ricos como Haskell, fará de você um programador melhor em qualquer idioma. " programmers.stackexchange.com/questions/28950/...
Waquo

14
Haskell é uma linguagem de programação puramente funcional. O código que você escreve no Haskell é puramente funcional (desde que você não use unsafePerformIO e similares). A IO-Mônada é puramente funcional; se você acredita de outra forma, não entende como as mônadas são usadas para modelar o fluxo de controle de uma maneira puramente funcional. Pense no seu programa como uma lista de compras de ações de IO, com uma lista de compras sendo apenas uma estrutura de dados pura, sem efeitos colaterais, e o tempo de execução do idioma sendo o comprador que realiza os efeitos colaterais.
Waquo 7/01/11

8
@ Jon, que tal, concordamos que: Haskell, a linguagem, é puramente funcional, mas não é o sistema de tempo de execução. A execução de um programa haskell é impura, mas o próprio programa é puro.
dan_waterworth

30

Prolog. Era tão diferente de qualquer outro idioma que eu tinha usado quando fui exposto a ele pela primeira vez. Eu gosto, então não odeio a sintaxe nem nada.


2
Aproximei-me Prolog como programação inversa, querendo saber minhas respostas já e depois programar para obter as perguntas :)
Jé Filas

1
@ Xepoch: Eu acho que você pode estar aí, o Prolog está formulando a pergunta. Um dos únicos idiomas 5GL adequados em uso.
Orbling

Em geral, acho que o Prolog é muito interessante e excepcionalmente poderoso, mas tenho muitos problemas para entender completamente o posicionamento do corte ( !).
Orbling

+1 para Prolog, tive um curso de inteligência artificial que usado Prolog e que é apenas o único curso de ciência da computação que fiz mal em.
rjzii

O Prolog não é uma linguagem de programação funcional. Ser azedado em funcional pelo Prolog é como azedado em programação procedural pelo Lisp.
APENAS MINHA OPINIÃO correta

24

Eu concordo com você no Perl. É a sintaxe mais feia que eu já vi. Eles dizem que nem mesmo os desenvolvedores Perl conseguem se lembrar do que escreveram no dia seguinte.


2
Def +1 em Perl. Eu sempre gostei particularmente de variáveis ​​(implícitas). Cria um ótimo código somente para gravação.
GrandmasterB

2
Todo mundo escreve o Perl de maneira tão diferente que pode muito bem estar escrevendo idiomas diferentes - você não precisa apenas aprender como o Perl trabalha para captar o código de outra pessoa nele, também precisa aprender como essa pessoa em particular o usou.
glenatron

3
Bah a esta resposta e ambos os comentários. Perl bem escrito é fácil de ler e escrever. Baby-perl escrito por iniciantes é simples, se detalhado. O único perl "ilegível" é ofuscado de propósito ou é usado como script de uma linha.
Sean McMillan

22

Eu teria que dizer adiante . A notação de que todas as operações são manipulações de pilha. Em sua forma pura, não há variáveis ​​locais para usar.


10
FORTH é uma linguagem maravilhosa. Quando eu estava aprendendo a programar no início dos anos 80, eu tinha um Atari 400 e minhas escolhas foram interpretadas como BASIC, Assembly e FORTH. Eu usei todos os três extensivamente, mas QUARTO mais do que qualquer outro. Ainda tenho os ultra-clássicos livros de Leo Brodie, começando FORTH e Thinking FORTH. De fato, se me pedissem para criar uma linguagem de auto-hospedagem do zero em um novo sistema de hardware, eu escolheria FORTH sem hesitação.
Adam Crossland

3
@ Adam Crossland: Pensamento FORTH é um grande livro, que você pode estar interessado neste link: thinking-forth.sourceforge.net
Orbling

1
@Orbling: grandes mentes pensam da mesma forma. Há mais de 10 minutos, coloquei o PDF no meu Kindle.
Adam Crossland

1
@ Adam Crossland: Um ótimo lugar para isso. Esse livro geralmente é útil para programadores, deve estar na lista de leitura para pessoas interessadas em FORTH ou não.
Orbling 07/01

1
Eu concordo inteiramente. Tem muito a dizer sobre como pensamos em resolver problemas em geral. Brodie é um pensador tão lúcido e um escritor claro. Suas obras são uma alegria para mim.
Adam Crossland

21

Ruby .

Isso me faz querer me matar:

1.month.from.now()

(Eu poderia ter a sintaxe exata errada, mas você entendeu).


23
AMD. Quem nunca pensou que isso era uma boa ideia?
EpsilonVector

8
O desconcertante não é com a leitura, é com a escrita. É difícil criar essa bobagem, e ter que memorizar / pesquisar todas as funções / propriedades internas é ridículo.
Mateus Leia

55
Sou eu quem acha isso incrível e é possivelmente um bom motivo para aprender Ruby?
Orbling

9
É incrível ler, sim. Mas isso significa que eu posso escrever 3. meses.de.um.mesmo.se.se. era.um.pelo ano? Não. Ou, pelo menos, eu não penso assim. Se eu puder ... RoR pode ser a primeira linguagem telepática de todos os tempos.
precisa saber é o seguinte

15
O que está errado DateTime.Now.AddMonths(1);? Esses recursos dificilmente tornam o código mais legível. (Não estou dizendo que C # tem a melhor sintaxe Você pode transferi-lo para as convenções idiomas e ainda será aplicada..)
ChaosPandion

18

Brainfuck

Qualquer um que possa honestamente escrever essa zombaria de um idioma nem precisa de um tópico como esse.

Olá Mundo (ponteiros, esquerda; explicação, direita):

+++++ +++++             initialize counter (cell #0) to 10
[                       use loop to set the next four cells to 70/100/30/10
    > +++++ ++              add  7 to cell #1
    > +++++ +++++           add 10 to cell #2 
    > +++                   add  3 to cell #3
    > +                     add  1 to cell #4
    <<<< -                  decrement counter (cell #0)
]                   
> ++ .                  print 'H'
> + .                   print 'e'
+++++ ++ .              print 'l'
.                       print 'l'
+++ .                   print 'o'
> ++ .                  print ' '
<< +++++ +++++ +++++ .  print 'W'
> .                     print 'o'
+++ .                   print 'r'
----- - .               print 'l'
----- --- .             print 'd'
> + .                   print '!'
> .                     print '\n'

2
Ou o espaço em branco? Todo o mal de Brainfuck combinado com código invisível.
Loren Pechtel

17

Lisp é a minha mais recente linguagem alucinante.

Levei as mônadas e a programação funcional de Haskell comigo e agora tenho macros para trabalhar. Estou entrando no CLOS e ainda não toquei no sistema de condições.


Eu nem gosto dos Lisps (com a possível exceção de Clojure - ainda não me decidi lá) e dei a você um +1. A parte alucinante está certamente lá e o que aprendi com o Lisp, embora não o use, informou muito do que faço em outros idiomas.
APENAS MINHA OPINIÃO correta

14

CAXUMBA

Esta é uma linguagem que aparece de vez ao tempo em histórias online e tem a honra de ser adicionado em uso de produção real armazenar informações críticas de segurança de vida (isto é, registros de pacientes). No entanto, esse também é um idioma em que a dispersão é apreciada e funções como as seguintes podem aparecer no código de produção (exemplo do artigo da Wikipedia sobre o tópico):

s A="String" F i=1:1:$L(A) W $c($S($A($E(A,i))<91:$A($E(A,i))-52#26+65,1:$A($E(A,i))-84#26+97))

uau, você não está brincando, está? Eu não dormi demais e de repente é 1º de abril? Nada com tantos parênteses e cifrões deve estar perto dos registros dos meus pacientes.
precisa saber é o seguinte

1
Meu primeiro trabalho de programação foi em uma empresa especializada em MUMPS! Infelizmente, eu tinha feito um curso universitário em desenvolvimento web, para que eles me colocassem na equipe ASP recém-formada da empresa, em vez de com as mãos antigas, mas o MUMPS foi o idioma em que fomos treinados nas primeiras semanas. Talvez eu tive a sorte de escapar ...
thesunneversets

1
Alguém postou aqui de Madison Wisconsin? Verona, sério?
Hans Passant

1
Eu acredito que thedailywtf.com tem uma seção inteira dedicada ao MUMPS. Não parece um idioma que eu gostaria de tocar.
Tyanna

1
Lembro-me de aprender M na academia e pensar que era interessante como uma linguagem para fins especiais. A dispersão que permite é como um tipo perverso de minificação. Na minha ingenuidade, imaginei que o código de produção contivesse pouco da abreviação extrema da linguagem. A primeira e única vez que vi uma base de código M de produção, meu intestino apertou ... parecia exatamente com o seu exemplo. Oh, que horror!
ajk

13

Eu diria Coq , ou outra implementação da teoria dos tipos dependentes. O sistema de tipos de Haskell não é muito expressivo comparativamente. Mover para um sistema de tipos mais expressivo (por exemplo, o cálculo de construções (CoC)) permite que você faça algumas coisas legais, como provar propriedades de programas no idioma e incorporar fortes invariantes em seus tipos, que podem ser verificados estaticamente.


2
Qualquer sistema / fornecedor / idioma de tipo dependente provavelmente classificaria mais confuso do que os idiomas comuns, então +1.
Orbling

1
A verificação formal de programas é algo em que estou começando. Certamente dobra a mente e está se tornando cada vez mais útil no mundo real. 1
dan_waterworth

7

Objetivo-C . Para ser justo, eu o estudei extremamente brevemente e não gostei da sintaxe à primeira vista, tanto que desisti dela.

Como é uma linguagem comum (relativamente) comum (principalmente para desenvolvimento em Mac / iPhone / iPad ), tenho certeza de que é realmente um pouco decente quando você se acostuma.


2
Bem, provavelmente se qualifica como um pouco alucinante, mas eu gosto. Pode ser [foo bar]útil se você perceber que é apenas um açúcar sintático para o objc_sendMsg(foo, "bar");qual, por sua vez, procura o ponteiro de função (é uma "barra" especial, não genérica). Você percebeu que é totalmente datilografado?
Per Johansson

Objective-C é apenas um enorme açúcar sintático em torno das funções de tempo de execução. Uma vez que você se acostumar com [receiver doStuff:arg]ele é muito parecido com um java dinâmica
toasted_flakes

6

Eu escolho Mercury .

Mercury inclinou minha mente, mostrando-me que mesmo línguas puras pode fazer I / O .

A maneira como isso funciona é que as funções de E / S no Mercury recebem um valor de 'estado do mundo' e retornam um novo valor de 'estado do mundo'. Portanto, as funções de E / S em Mercúrio transformam o mundo e, portanto, a pureza é mantida.


3
+1 "... o mercúrio transforma o mundo e, portanto, a pureza é mantida." - Eu gosto disso fora de contexto. ;-)
Orbling

Estou lutando pela curva de aprendizado com Mercury agora. Tem sido uma luta digna até agora. Eu gosto muito.
APENAS MINHA OPINIÃO correta

A única coisa que me afastou do mercúrio foi que seu tipo de string é NULL terminado.
dan_waterworth

6

Tem que ser Scheme , certamente. Tentar explicar call-with-current-continuationsempre machuca meu cérebro, mas depois que você entende, você pode criar soluções incrivelmente elegantes.

Deseja parar parcialmente através de um algoritmo e controle manual para outra pessoa? Certo!

Deseja retomar a mesma continuação várias vezes? Claro!

Deseja pausar a execução de um algoritmo, redefinir uma função e retomar a execução com a pilha original, mas com um estado global atualizado? Sem problemas! E faça isso várias vezes com alterações diferentes no estado global, mas com o mesmo ponto de reentrada da pilha? Para você, senhor, qualquer coisa!


+1 LOL + "Para você, senhor, qualquer coisa!" Além de quase ser uma linha em uma música em Oliver !, também é uma boa aspiração para um idioma.
Orbling

1
O esquema não é a única linguagem com continuações explícitas. Haskell , por exemplo, suporta isso muito bem e da mesma forma que é incompreensível.
APENAS MINHA OPINIÃO correta

4
É indiscutivelmente mais incompreensível em Haskell, já que (call / cc) é implementado como uma biblioteca e não como um recurso de idioma. Mas talvez isso o torne menos flexível.
Logan Capaldo

Eu acho que é simultaneamente mais e menos alucinante. Manter essa contradição na minha cabeça dobra minha mente. Então, no final, Haskell é mais alucinante. :)
APENAS MINHA OPINIÃO correta

O legal das continuações de Scheme (e Ruby !) É que elas estão embutidas na linguagem. Haskell basicamente adiciona sua sintaxe monádica ao redor do estilo comum de passagem de continuação, o que você também pode fazer no Scheme. Mas ter o call / cc embutido em todos os lugares sem ter que incorporar tudo em uma construção monádica definitivamente permite muitas construções alucinantes.
Dario

4

Eu costumava usar um editor antigo chamado TECO (Text Editor and COmparator), que era uma linguagem de modificação de texto muito poderosa, com todos os tipos de recursos de macro. Não me lembro da famosa citação exata sobre o assunto, mas a essência era "qualquer coleção aleatória de 20 caracteres é quase sempre um programa legítimo da TECO e alterará seu arquivo (é um editor) de uma maneira fundamentalmente imprevisível. um conversor de Fortran para PL1 em ​​cerca de uma página do código TECO.


5
"Um dos jogos mais divertidos para jogar com o TECO é digitar seu nome como uma linha de comando e tentar adivinhar o que ele faz. Praticamente qualquer erro de digitação possível ao conversar com o TECO provavelmente destruirá o seu programa, ou pior ainda - introduzir erros sutis e misteriosos em uma sub-rotina que já funcionava ". Homem, aqueles eram os dias!
APENAS MINHA OPINIÃO correta

1
O TECO também foi a base original do EMACS. O EMACS começou como apenas uma coleção de macros TECO!
Gabe

@ Omega: é necessário dizer a qual TECO você está se referindo. DEC TECO, fornecido com o TOPS-10, ou MIT TECO, aquele escrito em MIDAS. Este último TECO é o que o EMACS foi escrito. É também como o EMACS foi estendido. Eu costumava hackear o EMACS em vez de passar nas aulas.
John Saunders

Eu só usei DEC TECO. E sim aqueles eram os dias (para ser novamente jovens) ....
Omega Centauri

1
Faz-me lembrar de digitação no modo de comando Vim
ron

3

Assembléia tem sido a mais "perturbadora" para mim, mas estou apenas começando.


o que o torna pior é que é OS & hardware dependente
Dave

O que faz com que seja assim? Instruções diretas sem ordem explícita de agrupamento? algo mais?
Jé Queue

bem, em particular, não gosto do quão pouco claro o fluxo do programa se parece. Não é fácil ler rapidamente.
Anto

2
Ah, o Cincinnati Milacron 2200B: Comprimento variável da palavra combinado com a modificação do tempo de execução do endereço de um JMP. Isso fez o LSD parecer manso.
quer

3

Lisp . Aprender é uma série de pequenas epifanias, cada uma das quais mudará totalmente a maneira como você pensa em resolver problemas de programação.


3

REBOL

Ele é construído em torno da noção de código como dados, como é o Lisp . Os adeptos da linguagem têm dificuldade em explicar quais são seus benefícios exclusivos em relação a outras abordagens nessa família e geralmente acabam dando de ombros e dizendo algo como "Bem, o cara que criou o AmigaOS veio com ela, a biblioteca padrão é incluída e microscópica, e quando você o receber, será como tomar a pílula vermelha da Matrix e você nunca mais voltará. "

O problema disso é que ele é peculiar e não definiu com precisão quais programadores são seu mercado. Mas também em parte porque muitas das pessoas que a defendem são péssimas em explicar . :)

Mas Douglas Crockford costumava ser um fã, inspirou-se nisso com a criação do JSON e sugeriu que as pessoas investigassem isso em outubro de 2010:

"Ted Neward fez um trabalho muito bom de moderar o painel 'Futuro das linguagens de programação'. No final do painel, Ted perguntou aos participantes quais idiomas eles consideravam que as pessoas deveriam aprender para obter novas idéias. A lista incluía Io (Bruce Tate), Rebol (Douglas Crockford) , Forth e Factor (Alex Payne), Scheme and Assembler (Josh Bloch) e Clojure (Guy Steele) ".

Fonte: sauria.com

Eu acho que vale a pena olhar para quem quer explicar como eles pensam sobre o design e a extensibilidade da linguagem. Agora que é de código aberto (após 18 anos de desenvolvimento proprietário), as isenções de responsabilidade usuais que eu costumava dar para mantê-lo à distância já não se aplicam ... vale a pena dar uma olhada! A comunidade até saiu do seu programa proprietário de mensagens baseado em Rebol e começou a conversar no Stack Overflow (para minha surpresa!)


1
Evito o REBOL porque sua única implementação prática é um software não padronizado e não aberto que é alterado conforme o capricho de sua empresa proprietária. (Rebol 2 vs. Rebol 3 ...) Se for padronizado ou aberto, vou dar outra olhada, mas até esse dia o Rebol permanece fora do meu cinto de ferramentas.
APENAS MINHA OPINIÃO correta

1
@JUSTMYcorrectOPINION talvez tenha chegado o dia para dar outra olhada! O Rebol 3 agora é um software licenciado para Apache2 . Temos até um RebolBot aqui na sala de bate-papo Rebol e Red no StackOverflow para nos ajudar na demonstração do idioma. ( Red é uma outra variante Rebol open source que está mostrando alguma promessa muito interessante como uma versão híbrida compilado.)
HostileFork

2

Eu diria pelo quanto muitas pessoas evitam ter que escrevê-lo diretamente, que os desenvolvedores acham que o SQL é alucinante. Eu acho que muitas pessoas simplesmente não pensam em termos de conjuntos.


O SQL certamente dobra a cabeça, mas não me ajuda a escrever um código melhor.
dan_waterworth

4
O SQL é tão natural para mim quanto o BASIC, apenas eu. Incrível como o aplicativo suportado por banco de dados pode ser fácil quando você compreende o manuseio completo de dados no SQL.
Jé Queue

@dan_waterworth, acho que o SQL pode ajudá-lo a escrever código menor e mais conciso, colocando mais lógica no SQL vs. lidando com a maioria dos condicionais e as consultas subsequentes no aplicativo.
Jé Queue

@ Xepoch, eu acho, se há algo que a ascensão dos ORMs nos ensinou, é que as pessoas não gostam de escrever no SQL se puderem evitá-lo. Eles preferem escrever em seu próprio idioma.
precisa saber é o seguinte

Eu acho que usar qualquer coisa que possa escrever um código melhor do que você é uma coisa boa.
Jeffo

2

Puro

Pure é uma linguagem funcional baseada na reescrita de termos. Eu gosto, é esparsa e expressiva, embora um pouco discreta.


+1 Funcional significa vetor, linguagem excepcionalmente poderosa que. Como descendente de q (que deve um pouco à APL) e empresta uma tonelada de Haskell et al. Certamente merece menção.
Orbling

2

Pode não ser o mais alucinante, mas foi de longe o mais difícil para mim aprender (eu pensei que Haskell e linguagem assembly fossem mais fáceis!)

Esse é o conjunto de linguagens HDL , notavelmente VHDL (e Verilog em menor grau)

Superar o fato de que toda "função" é executada ao mesmo tempo é incrivelmente difícil e você não pode evitar a mudança para paralelizar absolutamente tudo. Obviamente, isso é apenas uma linguagem de programação de fronteira.


Eu fiz um pouco de VHDL uma vez. Eu tive um momento de epifania real quando subitamente percebi que, ao adicionar código, cada vez mais hardware parecia efetivamente implementá-lo e tudo estava sendo executado simultaneamente. Como a programação multithread com verdadeiramente ilimitados segmentos executando simultaneamente; talvez as pessoas com acesso a nós ilimitados no EC2 ou nos clusters de redução de mapa tenham um zumbido semelhante. (Mas, pouco depois, cheguei a apreciar como é uma dor completa implementar algo não trivial nesses idiomas e fugi).
timday

1
Sendo engenheiro eletricista, não tive muitos problemas com a simultaneidade, foi realmente uma libertação. Quanto à dor da implementação, bem, a UP é uma solução de nicho para classes específicas de problemas que transformam o problema em solução que pode ser descrita como algoritmos, um conceito originalmente retirado da matemática. Um problema com o paralelismo inerente está entre os problemas fáceis de resolver e os VHDL e FPGA são úteis naquele momento.

Sim, o VHDL é esquisito se você ainda não é um programador e está acostumado a trabalhar com vários blocos simultâneos.
15133 medivh

1

Tcl

Comecei a aprender uma vez, mas como aprendi o suficiente para fazer sentido, realmente não gostei da maneira como fazia meu cérebro parecer. Isso parece se qualificar como alucinante.


1
Fiz muita programação em Tcl entre 1995 e 1997 por nenhuma razão particularmente boa. Quando comecei a procurar um novo emprego em 1998, todos os recrutadores de toda a área da baía tentaram me entrevistar para os shows mal pagos e de alta pressão do VIGNETTE. Eu o removi rapidamente do meu currículo. Eu pensei em dar-lhe um tempo difícil sobre isso, pois lembrei-me de Tcl como sendo realmente fácil, mas eu meio que gostaria de ter aprendido Python em retrospecto.
Adam Crossland

Tcl é definitivamente um gosto adquirido. Pessoalmente, acho que o design da linguagem é genial - nenhuma outra língua se encaixa no meu cérebro tão bem quanto o Tcl, mas sei que sou minoria. Ame ou odeie, aprender exige que você repense como os idiomas devem funcionar.
perfil completo de Bryan Oakley

1

Linguagem de máquina de Turing , obviamente. É extremamente poderoso, comprovadamente superior a todas as outras linguagens de programação existentes e garantido que machucará seu cérebro se você tentar usá-lo.


6
Eu tenho que me opor a afirmar que é comprovadamente superior. O termo superior sugere levar em consideração questões subjetivas. Além disso, se rodarmos C em um computador com memória infinita (o que é justo porque uma máquina de Turing é executada com memória infinita), eles equivalem em potência.
Winston Ewert

2
@ Winston: A fita de uma máquina de turing não precisa ser infinita. Ele só precisa de ter uma fábrica de fita em cada extremidade que pode fabricar fita adicional conforme necessário :)
Mike Dunlavey

"Provavelmente superior" é, por definição, um termo objetivo. Isso significa que qualquer idioma pode ser implementado em uma máquina de Turing, mas nem todo idioma pode implementar uma máquina de Turing. Obviamente, isso também se aplica a linguagens como C, desde memória infinita e pilha infinita.
precisa saber é o seguinte

BrainFuck, como já mencionado na pergunta, e é praticamente a linguagem de máquina de Turing.
Mchl

1
Isso mostra que uma máquina de Turing é mais poderosa. O problema é que, pelo menos como eu uso o termo, alegando uma linguagem a ser superior seria também ter em conta a facilidade de utilização, disponibilidade, etc.
Winston Ewert

1

C

Ponteiros, gerenciamento de memória e conversão de tipos, todos pensam muito e são fáceis de errar. A falta de estruturas de dados internas, como tabelas ou listas de hash, significa que você precisa criar sua própria ou encontrar uma biblioteca de terceiros e aprender sua API.


Desculpe. C é uma linguagem assembly. Claro que não tem essas coisas.
22411 Peter Rowell

2
Linguagens assembly são incompreensíveis.
David4dev 15/02

-1

JESS (Java Expert System Shell). Incorporada em um ambiente Java, essa adaptação do CLIPS é uma linguagem de sistema especialista funcional baseada em regras. Tentando mapear objetos Java reais como fatos e encontrar as perguntas certas para obter os resultados que você espera é um verdadeiro desafio. Menos ainda, se você estiver familiarizado com a teoria especialista em sistemas, mas quando você vem de uma mentalidade pura de OOP, ela não se encaixa bem. NOTA: CLIPS não é Lisp, mas parece com isso. Mais uma mente dobrada.

Depois de passar pela curva de aprendizado inicial, é bastante poderoso e muito rápido encontrar as respostas.


Jess é uma versão moderna do CLIPS que também foi incorporada como uma espécie de mecanismo de script / lógica para seus próprios aplicativos.
Tangurena 7/01/11

Ok, eu estou corrigido. haskel.com/corp/details/0,10294,CLI1_DIV139_ETI9759,00.html No entanto, exige uma mentalidade muito diferente do idioma que está embutido no.
Berin Loritsch


-1

CIL

CIL, a linguagem intermediária comum que todos os programas .NET compilam, uma espécie de assembly orientado a objetos. É interessante para mim tentar escrever ou ler código nele e comparar suas construções com as do C # que eu já conheço. É uma boa maneira de aprender mais o que o .NET faz nos bastidores. E pode ser útil para coisas como geração dinâmica de código ou reescrita de códigos compilados existentes usando o Mono Cecil .


2
ou bytecode para esse assunto também?
perfil completo de Jé Queue

Se você quer dizer código de bytes Java, não tenho nenhuma experiência com ele, por isso não estou em posição de recomendá-lo como algo alucinante.
precisa

Eu realmente não comparar Java-Bytecode e CIL, como Java-Bytecode já está compilado e CIL vai ser compilado em tempo de execução (Just-In-Time-Compiler de .net)
basti

@chiffre Na maioria das circunstâncias, Java Bytecode e CIL funcionam exatamente da mesma maneira. Nos dois casos, você tem código-fonte (C # ou Java) que é compilado em uma linguagem intermediária binária no "tempo de compilação" (CIL ou Java Bytecode), que é compilado no código de máquina real no "tempo de execução", por um JIT compilador.
svick
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.