kol, uma linguagem de programação escrita em coreano
(github.com/smc0478)Olá.
Criei uma linguagem de programação escrita em coreano.
Motivo da criação
- Vi linguagens de programação escritas em hangul, como Umjureong e Aheui, e quis experimentar programar de forma natural em coreano.
- Também é um estudo para, no futuro, criar uma linguagem de verdade.
Instalação
pip install korean-lang
Tipos de sintaxe
Criei as sintaxes apresentadas abaixo.
Para mais detalhes, consulte o link do meu GitHub.
Saída
"안녕 세상!"을 출력한다.
Variáveis
- Os nomes das variáveis podem ser formados por letras coreanas (coisas como
ㄱnão são permitidas),_e números. - As variáveis podem armazenar inteiros, strings, arrays, dicionários etc.
정수는 1이 된다.
소수는 3.141592가 된다.
이름은 "홍길동"이 된다.
참값은 참이 된다.
빈값은 없음이 된다.
숫자_배열은 [1 다음 2 다음 3 다음 4]이 된다.
사람_정보는 {"이름"은 "김철수" 또 "나이"는 25}이 된다.
Condicionais
만약 ... 이면/면,아니고 만약 ... 이면/면,아니면 ... 이면/면funcionam de forma parecida com if, else if e else, e executam다음 ... 문단을 실행한다..
나이는 입력한 것을 정수로_변환한 것이 된다.
만약 나이가 18보다 크거나 같다면 다음
"성인입니다."를 출력한다.
문단을 실행한다.
아니고 만약 나이가 13보다 크다 또는 나이가 13랑 같다면 다음
"청소년입니다."를 출력한다.
문단을 실행한다.
아니면 다음
"어린이입니다."를 출력한다.
문단을 실행한다
Laços de repetição
계속 ... 인 동안é parecido comwhilee executa다음 ... 문단을 반복한다.....에 있는 각 항목들을 ...로 가져와éfor ... in ...e executa다음 ... 문단을 반복한다..
숫자는 0이 된다.
계속 숫자가 5보다 작다인 동안 다음
숫자를 출력한다.
숫자는 숫자와 1을 더한 것이 된다.
문단을 반복한다.
배열은 [10 다음 20 다음 30]이 된다.
배열에 있는 각 항목들을 숫자로 가져와 다음
숫자를 출력한다.
문단을 반복한다.
Funções
함수 ...는 (...과 ...로)é a parte que define a função, e다음 ... 문단을 실행한다.é a parte de execução da função.- A função é chamada no formato
...과/와 ...을/를 ... 로/으로 ...한다./다..
함수 팩토리얼을_구한다는 가로 다음
만약 가가 0이랑 같다면 다음
결과 값은 1이 된다. 그리고 끝난다.
문단을 실행한다.
결과 값은 가와 ((가를 1로 뺀 것)으로 팩토리얼을_구한 것)을 곱한 것이 된다.
그리고 끝난다.
문단을 실행한다.
4로 팩토리얼을_구한 것을 출력한다.
Structs
- Uma struct é parecida com a
structda linguagem C.
구조 사람은 다음
변수 이름이 있다.
변수 나이가 있다.
값을 가진다.
철수는 사람이 된다.
철수의 이름은 "철수다"가 된다.
철수의 이름을 출력한다.
Classes
유형corresponde à classe de outras linguagens.
유형 동물은 다음
변수 이름이 있다.
함수 소리를_낸다는 다음
동물의 이름과 "이(가) 소리를 냅니다."를 더한 것을 출력한다.
문단을 실행한다.
값을 가진다.
강아지는 동물이 된다.
강아지의 이름은 "바둑이"가 된다.
강아지 안에서 소리를_낸다.
Pontos que ficaram aquém
- É uma pena que existam sintaxes estranhas que não soam naturais em coreano, como no caso dos arrays.
- Traduzi class para
유형em coreano, mas acho que pode haver uma palavra melhor; se eu descobrir depois, pretendo trocar.
Encerrando
Não é particularmente útil, e o código interno ficou meio bagunçado porque escrevi tudo às pressas em duas semanas, mas espero que achem interessante.
Obrigado por lerem.
29 comentários
Parece realmente muito legal! Estou torcendo por vocês.
Obrigado.
Parece que também seria ótimo para fins educacionais, para pessoas que não estão familiarizadas com inglês e matemática.
O fato de conseguir explicar muito bem o pensamento computacional em coreano, sem símbolos como
if, for, while, =, parece ser uma enorme vantagem educacional.Parece uma ideia muito boa!
Obrigado. Com certeza, por estar em coreano, parece que há partes que acabam sendo mais fáceis de ler do que em inglês.
Parece que, no caso de arrays, daria para usar vírgulas sem necessariamente precisar do delimitador
다음.E também fiquei curioso se a estrutura dos arrays pode incluir structs/classes, outros arrays ou dicionários.
Na época, o objetivo era realmente usar só coreano e excluir ao máximo inglês e pontuação, então eu não usei, mas com certeza parece que colocar vírgulas seria mais natural. Vou tentar adicionar isso depois.
Além disso, os arrays foram projetados como uma estrutura que pode armazenar dados de todos os tipos. Se não funcionar, é bug. T_T
Interessante.
Obrigado.
Interessante. Tive uma boa ideia; acho que vou tentar isso como projeto paralelo.
Ótimo. Ficarei no aguardo.
Ooh.. estou torcendo por vocês
Obrigado.
É bom que use menos caracteres especiais como
+-=$&do que outras linguagens. Em teclados de dispositivos móveis pequenos, é difícil digitar caracteres especiais.Oh, que vantagem interessante. Obrigado.
Muito bom...
Obrigado.
Talvez seja uma questão de preferência pessoal, mas acho que
éteria sido melhor do quefunciona.Originalmente, no início, a atribuição de variáveis era
ganeun ~ ida. Mas, durante o desenvolvimento, como também se usava "ida/da" em chamadas de função, a análise de expressões ficou ambígua, então mudei para "doenda". Mais tarde, acho que vou tentar fazer com que seja possível analisar com "ida".É verdade, parece que a chamada de função deve ser “~n-da”, haha
Gostei de ler.
Obrigado.
Isso me traz muitas lembranças de quando fazíamos algo parecido nas aulas de compiladores na universidade.
Ainda não aprendi, mas estou animado.
Ué, pelos nomes dos arquivos do lexer e do parser, parece que você estudou compiladores, não foi?
Ah, é que eu ainda estou no 3º ano da faculdade, então não fiz uma disciplina de compiladores e acabei fazendo isso estudando por conta própria; além disso, como queria terminar rápido, aprendi e desenvolvi meio na gambiarra.
Que tentativa bacana!! Ficou divertido hehe
Dá para sentir que vocês pensaram bastante em como expressar isso de forma natural.
Obrigado.
Já houve continuamente, em nível de comunidade, tentativas de adotar o coreano como linguagem de programação, e isso me fez lembrar deste link, então estou compartilhando. haha
https://namu.wiki/w/%EC%B0%BD%EC%A1%B0(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EC%96%B8%EC%96%B4)
Ao criar e pesquisar, vi que há muitas tentativas interessantes.
Um dos que mais me impressionou foi o link abaixo; achei interessante que até os números são expressos em hangul.
https://github.com/recu3125/malC_lang