Sempre tive essa dúvida. Já usei o google e não achei a resposta. Se alguém souber, me diz ai. Fiquei interessado nisso, quando conheci o projeto LUA, linguagem feita por brazucas.
Versão Imprimível
Sempre tive essa dúvida. Já usei o google e não achei a resposta. Se alguém souber, me diz ai. Fiquei interessado nisso, quando conheci o projeto LUA, linguagem feita por brazucas.
I rapaz. Contruir uma linguagem nao eh nada facil.
Aprendemos a fazer isso na faculdade.
Vais precisar ter conhecimento sobre pilhas, tokens, filas...
Tem um programa que ajuda vc a fazer o inicio.
Isso no curso de Ciências da Computação ?
sim, em ciencias da computacao.
Primeiro vc devera dominar uma linguagem. Com essa linguegem voce contruira se compilador.
Meh... axo que to precisando treinar mais digitacao!
h\UHUhauHAU
Interessante. Esquema é continuar estudando C e Phyton.
Faço Eng. de computação, e tenho uma noção sobre onde vc poderia começar a fazer sua linguagem de programação.Citação:
Postado originalmente por shinzo
1º passo: Estruturas básicas: Pilhas, filas, árvores, grafos, etc ... (Vc pode achar conteúdo sobre isso, com o título: Estrutura de dados)
2º passo: Lógica aplicada a computação: Esse é o título sobre as apostilas que vc pode ir pesquisando (apenas depois de ter concluido ou estar estudando o 1º passo). Esse assunto irá dar muita ênfase sobre as linguagens formais, suas sintaxes, semânticas, computabilidade, etc. Esse segundo passo é EXTREMAMENTE importante, principalmente para construir um compilador descente.
3º passo: Programar bastante: Esse com certeza é o passo mais importante, não basta apenas estar muito bem nos passos anteriores, vc precisará dominar bastante a linguagem que o seu compilador será feito (recomendo uma linguagem compilada, como C/C++).[/b]
Mas pilhas, filas etc. não é construção de uma nova linguagem, é apenas lógica de programação, estrutura de dados..Eu aprendi isso na faculdade com linguagens já existentes, normalmente Pascal. Que eu saiba faculdade não ensina criar linguagem, ensina criar programas.
Natascha, pilhas, filas, árvores realmente são estruturas SIMPLES de dados, mas para construir qualquer programa (um compilador é um programa) vc precisa saber utilizar essas estruturas.Citação:
Postado originalmente por natascha
Sobre ensinar a fazer uma linguagem, infelizmente devo lhe falar que cursos de nível superior ensinam a construir linguagens de alto nível.
Citação:
Postado originalmente por eyglys
Sou programadora, sei tudo isso. Acontece que na minha opinião há uma confusão aqui.....as faculdades ensinam a criar sistemas, programas, nunca ouvi falar de curso que ensina a criar linguagem, se aprende é a programar com as já existentes. Por exemplo, quando eu fiz faculdade, aprendi Pascal, C, Html, Asp, que são linguagens já criadas, ninguem me ensinou a criar uma nova, mas sim a utilizá-las.
existem cursos que ensinam criar "linguagens" sim, no curso de engenharia da minha faculade eles tem uma matéria chamada compiladores, onde eles tem que desenvolver um compilador novo, jah eh um belo começo para se criar a linguagem :P
Correto Ice!Citação:
Postado originalmente por 1c3_m4n
Tudo que foi informado antes, como a Natascha disse, são estruturas, são formas de se tratar dados. E estas podem ser escritas em qualquer linguagem.
Para que vc possa criar uma nova linguagem, vc precisa conhecer bem uma linguagem, de preferência baixo nível, que se possa comunicar diretamente com o hardware (Assembly por exemplo), para você construir o compilador, ou interpretador, como for de sua preferência. Se não souber o que estou falando precisará estudar mais um pouco, mas se está aqui acredito que saiba.
Se vc for construir um interpretador, acredito que consiguirá fazer com a maioria das linguagens, pois ele somente terá que ler um arquivo e executar seus comandos de acordo com os códigos descritos neste arquivo.
Agora para você fazer um compilador, é mais complexo, precisará de conhecimente de nivel baixo, para poder trabalhar com hardware (não sei se é possível fazer isto, sem este conhecimento, me corrijam pessoal de Ciencias da Computação), ele vai ler um arquivo com a sua linguagem e a partir dele gerará um executável que possue código de máquina (simplificando o processo, estude sobre compilação que tem outros passos).
Citação:
Postado originalmente por edmafer
Ah ok. Agora compreendi, é que em Ciência da Computação, Analise de Sistemas e Sistemas de Informação, isso não é ensinado, aprende-se apenas as linguagens de alto nível. Acredito que apenas em Engenharia da Computação.
Natasha, eu acho que isto muda de acordo com a instituição. Aqui na minha cidade (Maringá-Pr) na UEM, no curso de Ciencias da Computação, eles possuem a matéria compiladores.Citação:
Postado originalmente por natascha
Aqui no Rio Grande do Sul na UFSM tb tem a materia compiladores...
Ciencias da Computacao FEI - Compiladores! :D
no meu curso de Eng. da Computação eu tenho uma matéria "Tópicos de Computação I" onde basicamente é a matéria de compiladores.... tem muita, massss muita teoria por trás da criação de uma linguagem...
coisas do tipo: Alfabeto, Linguagem e Gramática , Análie Léxica, Autômatos com Pilha, Análise Sintática, Máquinas de Turing, etc....
NATASHA,
Fiz Analise de Sistema, e no meu curso na matéria de Organização e Arquitetura de Computadores, tive aulas de linguagem de BAIXO NÍVEL (Assembly). O Edson foi CAMPEÃO!!! Para quem quer criar uma linguagem própria, tem que, antes ou depois de conhecer qualquer estrutura, conhecer uma linguagem de BAIXO NÍVEL, q na minha opinião é fácil, mas HIPER-TRABALHOSA, e pouco prática.
Agora, a pessoa tem saber se vale a pena, e qual a real finalidade, para ingressar nessa, senão é perder tempo.
FUI!!
Eu tive matéria de compiladores, mas nenhuma matéria ensinava linguagem de baixo nível e nem a criar linguagem..fiz Fatec.
e aqui na minha cidade, nas outras faculdade tbm não ensinam a criar linguagem...conheço pessoas de outros faculdades e nunca ouvi falar que ensinasse...bom...deve variar então....eu só usei linguagens já existentes...
algum de vcs chegaram a criar alguma linguagem?
Valeu Maurelius!
Eu curso Sistemas de Informação no Cesumar, então só vejo linguagens mais comerciais, e básico de C em Estrutura de dados.
O pouco que sei aprendi pela curiosidade.
Acredito que a matéria de compiladores esteja incluída nos curriculums da maioria dos cursos de graduação plena (os que duram 4 anos, ainda não vi curso de tecnólogo - em geral 3 anos - com essa disciplina), e geralmente o que se aprende é a criar um compilador para uma linguagem já existente, e não desenvolver a linguagem propriamente dita (apesar de que são visto coisas como alfabeto e linguagens; gramáticas; automatos finitos e linguagens regulares; etc.). Já vi o caso de um professor que já tinha desenvolvildo uma linguagem e o que os alunos fizeram foi criar um compilador para esta linguagem, mas claro que isso vai variar de uma instituição para outra.
Citação:
Postado originalmente por poleto
Eu tbm acho!! 8)
edmafer, um compilador e um interpretador são quase idênticos a grande diferença está em que um vai executando as instruções e o outro vai transformando o código em um código objeto.Citação:
Postado originalmente por edmafer
Ao contrário do que muitos pensam, o compilador não gera um código de máquina (código de máquina, é um código entendível pelo nível mais baixo, o hardware), eles geram um código compreensível pelo sistema operacional (por isso um aplicativo de um sistema operacional dificilmente funcionará em outro, a menos que a API de instruções de SO fornecida, seja EXATAMENTE a mesma).
Respondendo a alguns questionamentos de natasha:
Como já foi explicado, cursos superiores ensinam sim a fazer linguagens de programação, e a disciplina mais básica disso seria arquitetura de computadores (dá uma noção do funcionamento do computador e como as linguagens são entendidas pelo hardware) e compiladores. É obvio que existe muita coisa adiante de compiladores, que é plenamente possível ser abordado em um curso superior.
Faço Eng. de computação e essas disciplinas básicas, para se criar uma linguagem são ministradas na minha instituição pública.
Isso realmente varia de cada instituição. Na minha, tivemos que fazer uma máquina virtual com um compilador de assembly na disciplina mais básica sobre o assunto.Citação:
Postado originalmente por poleto
Vc tem razão em dizer que por trás de uma linguagem existe Alfabeto, linguagem, semântica (análise sintática), etc (só deixaria a parte a máquina de Turing, pois é uma história bem longa, e só teria importância para intusiastas da computação).Citação:
Postado originalmente por PiTsA
Foi levando em consideração esses tópicos, que eu falei no inicio de todas as msg, que era bastante importante saber lógica (entendam lógica, como um conjunto de regras, e toda uma teoria baseada em conjuntos ou não, para formar um raciocinio VÁLIDO).
Hoje em dia muda muito de uma faculdade para outra...
Aqui na minha cidade o curso de engenharia elétrica tem uma matéria que ensina forth e assembly.
esse negócio de matéria + básica depende do curso.
não são todos relacionados a informatica que tem isso no cronograma. processamento de dados e analise de sistemas não ensinam a criar linguagem. e é óbvio que em eng. da computação deve ter algo do tipo.
ninguem daqui do fórum chegou a desenvolver alguma?
Natascha seguinte eu faço ciencias da computação e aqui eu tenho assembly, linguagens formais, e compiladores, a ideia é que apos isso voce tenha a base para montar sua propria linguagem, já que ja tem a ideia de como se cria um compilador ( passo essencial pra se ter uma linguagem) e de como fazer esse compilador passar informações para o sistema direto, alem do funcionamento das gramáticas que da a base teórica do compilador.
Bom é isso, depois disso eh so o cara se esforçar que consegue definir um compilador e as estruturas da sua linguagem, mas o trabalho é mto grande para fazer a linguagem.
falows
Eu faço ciencias da computação e tive dois modulos de compiladores ... cheguei a desenvolver parte da linguagem que era o analizador sintatico .... mas após isso tem varias outras coisas que se deve abordar .... o lance que se é muito complicado desenvolver uma linguagem sózinho alem de levar muito tempo e ter pouco retorno ... ao menos que vc precise de uma nova linguagem para efetuar tais procedimentos ... ai sim se tem um objetivo e com certeza ela ira vingar ... mas no meio academico foi muito mais para conhecimento e teoria mesmo .Citação:
Postado originalmente por natascha
Eu fiz Tecnologia em Processamento de Dados e digo a mesma coisa que a Natascha... na minha faculdade aprendi Pascal, Java, Asp, Delphi e C++... agora ensinar a montar uma linguagem não...
Interessante isso...
E mesmo em outras faculdade não tinha visto a matéria compiladores :? ...
Mas deve ser muito bacana... apesar de eu não gostar muito de programar...rsrsrs...
Citação:
Postado originalmente por smvda
Eh cara na minha facul tb tem de fazer um analisador so que o semantico se nao me engano .
falows