왜 스크립트 언어들에 컴파일 언어의 문법이 도입되는지(타입스크립트, 파이썬 타입 힌트 등 등)


왜 스크립트 언어인데 repl로 코드 작성하기가 불편한건지


스크립트 언어의 한계가 어디서 오는지


왜 미밍 언어가 차세대 스크립트 언어로써 가능성이 있는지에 대해 강연할꺼임









미밍 언어 스케치:




미밍, 괄식 프로그래


* 바텀업(미괄식) 방식이 왜 좋나요?

두서없이 물흐르듯이 막 코딩할수있음

창발적인 코딩이 가능함

독자입장에서 마치 이야기를 읽듯이, 코드를 위에서 아래로 쭉 읽어내려갈수있음


* 왜 전부다 바텀업 구조로 이루어져야하는가?

1. 언어 정의가 단순하고 자기완성적인게 컴파일러 만들기 쉽고 유지보수하기 쉽고 발전시켜나가기 쉬움

언어 정의가 단순하고 닫혀있을수록 매력적임(리스프처럼)

일부는 두괄식, 일부는 미괄식인 구조보다

모든 면에서 미괄식이거나 모든 면에서 두괄식인 구조가 단순하고 자기완성적이고 매력적임


2. 탑다운(두괄식) 구조를 권장하는 언어는 많지만 바텀업(미괄식) 구조를 권장하는 언어는 별로 없는데

나는 그 이유가 두괄식 구조를 권장하는 영어가 주 프로그래밍 언어이기 때문이라고 봄.

따라서 미괄식 구조가 많은 우리말을 이용해 미괄식 구조를 권장하는 실험적인 프로그래밍 언어를 제안하는 바임.




예시:



// 주석은 주석대상 코드 위에 오는것이 권장됨


// 확장자가 파일명 앞에옴에 주의

// 미밍.계산기



// 변수 정의는 변수 심볼에 타입을 결합하는 것일 뿐,

// 실제 상태를 가지는 변수를 생성하는 것이 아님

// 상태는 함수를 정의하는순간 생성됨

실수

// 자주 쓰이는 키워드들은 편의상 약어를 제공함

// 문자열

연산자


ㄱ + ㄴ

// "은" "는" "이" "가" 는 모두 함수를 정의하는 예약어이고 서로 대체 가능함

ㄱ, 더하기



// 바텀업 특성상, 앞서 정의한 실수 ㄱ, 실수 ㄴ라는 정의가

// 같은 스코프안에있는 모든 ㄱ,ㄴ에게 적용됨

// 정의들은 언제든지 덮어쓰기 가능함

ㄱ - ㄴ

ㄱ, ㄴ 빼기


// 참 거짓을 나타내는 함수는 물음표로 끝나는 것이 권장됨

만약 연산자, "+" 같다?

    ㄱ, ㄴ 더하기

아니면 연산자, "-" 같다?

    ㄱ, ㄴ 빼기

연산자, ㄱ, ㄴ 계산하다


<문자열>리스트 프로그램인자

프로그램인자[1:3] => ㄱ, ㄴ, 연산자

ㄱ, ㄴ, 연산자 계산하다 출력하다

프로그램인자 메인함수


// 두괄식 프로그래밍이 편안한 상황을 위해 "요약", ":" 등의 특수 키워드를 제공

// 두괄식 프로그래밍과 관련된 모든 키워드는 콜론이 사용됨

// 콜론은 일상생활에서 보통 라벨링할때 쓰이므로, 두괄식을 나타내는데 좋은 기호라고 볼수있겠음

// 그러나 아래 예시를 보면 알수있듯이, 두괄식 우리말 프로그래밍 언어는

// 미괄식 우리말 프로그래밍 언어에 비해 어색하므로 권장되지 않음

실수 결과

요약: ㄱ, ㄴ, 연산자 확장된_계산하다

    결과: ㄱ *: 만약 연산자, "*" 같다?

    만약 ㄴ, 0 다르다?

        결과: ㄱ / ㄴ: 만약 연산자, "/" 같다?

    아니면

        "0으로 나누기" 예외 발생

    결과


// 같은 스코프 내의 모든 정의는 덮어쓰기 가능함(미괄식의 강점)

// 덮어쓰기된 함수는 덮어쓰고난 뒤에있는 코드에게만 적용됨

// 메인함수는 가장 마지막에 실행되므로, 언제든지 덮어써질수 있음

프로그램인자[1:3] => ㄱ, ㄴ, 연산자

ㄱ, ㄴ, 연산자 확장된_계산하다 출력하다

프로그램인자 메인함수