칼립소가 뭐야?
This post was partially adapted from The Calypso Manifesto, which I wrote on my "original" blog a bit over a week ago.
나는 많은 사람들이 나의 이전 댓글을 읽는 것을 보았다. 너는 여기서 볼 수 있다.
칼립소 편년사 소개
제임스 [미정의]・ 3월 2일・ 5분 읽기
내가 그들을 캘리포니아에 소개하면 몇몇 사람들에게 도움이 될 것 같다. 왜냐하면 99.9%의 독자들이 (적어도 dev.를 하나의 보기로 볼 수 있도록) 캘리포니아가 무엇인지 모른다고 확신하기 때문이다.
Calypso is a mostly imperative language with some functional influences that is focused on flexibility and simplicity.
GitHub 페이지에 있는 Calypso의 슬로건입니다. 여기서 확인할 수 있습니다.
칼립소 랑 / 칼립소
Calypso는 주로 명령식 언어로 기능적인 영향을 미치며 유연성과 단순성에 중심을 두었다.
칼립소
Calypso는 주로 명령식 언어로 기능적인 영향을 미치며 유연성과 단순성에 중심을 두었다.
이 코드는 현재 진행 중입니다.기부를 환영(격려)하고,심각한 통증을 견딜 준비가 되어 있지 않으면 생산에서 사용하는 것을 권장하지 않는다.전혀 작동하지 않는 코드.
예.
다음 예는 프로그램의 CLI 매개 변수에 숫자가 지정될 때까지 FizzBuzz의 구현입니다.이것은 현재 psuedocode입니다. 변경될 수 있습니다.
수입 기준.과정 1아그스
fn main(args:args)->
아그스
|> _.가져오기(0)
|> _.또는 열기("100")
|> 유인. string
|> _.포장 풀기 또는 (100)
쉬쉬 소리를 내다
|> _.각각 (& println ("{}"), &...
View on GitHub
그런데 이 구호는 도대체 무슨 뜻입니까?이 글에서, 나는 내가 왜 Calypso를 만들었는지, 그것이 무엇인지, 그것이 무엇이 될 가능성이 있는지, 그리고 그것이 무엇이 되지 않을 것인지를 묘사할 것이다.
그럼, 칼립소는 무엇입니까?
Calypso는 프로그래밍 언어로 주로 imperative programming의 특성을 사용하지만 functional programming의 영향을 받는다.그것의 영감은 Elixir과 Rust에서 나왔다.나는 Rust로 컴파일러와 가상 컴퓨터를 작성하고 있다. 왜냐하면 나는 그것에 대해 상당히 익숙하고, 그것은 매우 좋은 언어라고 할 수 있기 때문이다.
전체 건축에서 칼립소의 영감은 주로 녹에서 나온다.그러나 많은 기능들이 불로장생약이나 에랑의 계발을 받았다.
많은 경우 Elixir와 Erlang은 함수식 언어로 묘사되어 일부 점(예를 들어 부작용이 있음)에서 명령식 세계로 자유롭게 들어간다.나는 Calypso를 상반된 명령식 언어로 묘사할 것이다. 그것은 어떤 점에서 함수식 세계를 벗어난다.본질적으로는 비슷해 보이지만 확연히 다르다.
나의 목표는 Calypso를 익숙하게 하는 것이지만 함수 세계에서 익숙하지 않을 수도 있는 개념을 도입하는 것이다. 이것은 코드가 간단하고 간단하며 유연하며 유지보수가 가능한 것을 유지하는 데 도움이 된다.
표어는 무슨 뜻입니까?
유연성과 단순성은 칼립소의 두 가지 지도 원칙이다.다음은 이러한 의미입니다.
Calypso는 프로그래밍 언어로 주로 imperative programming의 특성을 사용하지만 functional programming의 영향을 받는다.그것의 영감은 Elixir과 Rust에서 나왔다.나는 Rust로 컴파일러와 가상 컴퓨터를 작성하고 있다. 왜냐하면 나는 그것에 대해 상당히 익숙하고, 그것은 매우 좋은 언어라고 할 수 있기 때문이다.
전체 건축에서 칼립소의 영감은 주로 녹에서 나온다.그러나 많은 기능들이 불로장생약이나 에랑의 계발을 받았다.
많은 경우 Elixir와 Erlang은 함수식 언어로 묘사되어 일부 점(예를 들어 부작용이 있음)에서 명령식 세계로 자유롭게 들어간다.나는 Calypso를 상반된 명령식 언어로 묘사할 것이다. 그것은 어떤 점에서 함수식 세계를 벗어난다.본질적으로는 비슷해 보이지만 확연히 다르다.
나의 목표는 Calypso를 익숙하게 하는 것이지만 함수 세계에서 익숙하지 않을 수도 있는 개념을 도입하는 것이다. 이것은 코드가 간단하고 간단하며 유연하며 유지보수가 가능한 것을 유지하는 데 도움이 된다.
표어는 무슨 뜻입니까?
유연성과 단순성은 칼립소의 두 가지 지도 원칙이다.다음은 이러한 의미입니다.
또한 Calypso의 표준 라이브러리에도 적용되어야 하며, 이 라이브러리는 표현력, 유연성, 성능을 갖추어야 한다.
그럼 내가 왜 칼립소를 만들었을까?
만약 네가 아직 모른다면, 나는 녹과 불로장생약을 좋아한다.그러나 불로장생제는 적합하지 않은 것이 있다.이것은 결코 불로장생약의 특허가 아니다. 어떤 것들은 녹이 슬어도 가장 좋은 것은 아니다.
녹이 너무 치명적으로 보이거나 믿기지 않는 정적 특성 때문에 개발 과정에서 너무 느려 보일 때도 있다.이것은 Rust를 사용하기 쉽게 하지만 장기적으로 보면 개발 주기를 단축하고 번역 시간을 연장할 것이다.이것은 나로 하여금 Elixir처럼 더욱 활력 있는 언어로 경향하게 한다.
그러나 Elixir는 BEAM과 Erlang/OTP과 내재적인 관계를 가지기 때문에 이것은 변수와 같은 특성을 가진다는 것을 의미한다(예를 들어 Agent
s 또는 GenServer
s).이것은 OTP가 Elixir/Erlang의 주요'응용 프레임워크'라는 것을 의미한다.내가 보기에 OTP는 응용 프로그램에 있어서 매우 좋은 디자인 이념이지만 때로는 설정하거나 머리를 쥐어짜기 어려울 뿐이다.간단한 응용 프로그램을 설계할 때도 많은 것을 고려할 수 있다. 이것은 때때로 응용 프로그램을 증량적으로 개발하는 것이 훨씬 어렵다는 것을 의미한다.
자바스크립트와 파이톤 등 기존의 스크립트 언어가 확장될 때 사용하기 쉽지 않다는 것을 발견했다.예를 들어 자바스크립트는 많은 디자인 결함이 있다. (나는 본문에서 설명하지 않을 것이다. 왜냐하면 이것은 JS에 관한 문장이 아니기 때문이다.) 그리고 파이톤도 있다.네가 어느 정도 시작하고 확대할 때, 이 두 가지 방법은 모두 어느 정도 효과가 있지만, 그것들은 유지하기 어렵다.
이것이 바로 내가 칼립소를 창작한 몇 가지 이유다.나는 Rust와 Elixir를 좋아하지만, 완전한 응용 프로그램이 아니지만 Bash 스크립트로만 사용할 가치가 없는 스크립트를 포함하는 일부 응용 프로그램에는 너무 많다.그 밖에 때때로 나의 응용 프로그램은 이 두 가지 상황에 진정으로 가장 적합하지 않고 더욱 광범위한 동적 환경에 더욱 적합하다.
나는 칼립소가 어떤 사람이 됐으면 좋겠어?
개인적으로, 나는 Calypso가 응용 프로그램에 사용할 수 있는 언어가 되는 것을 보고 싶다. 간단하고 복잡하며, 오프라인과 오프라인, 명령행과 도형화되기를 바란다.
나는 이것이 일어날지 모르겠지만, 나의 목표는 칼립소가 사람들로 하여금 그것을 이 점에 데려올 수 있도록 충분하게 친근하게 하는 것이다.
나는 칼립소가 어떤 사람이 되기를 원하지 않는다?
나는 Calypso가 Rust, Elixir, 자바스크립트, Python, 또는 다른 어떤 것도 대체할 것이라고 기대하지 않는다.그것의 창설은 이 점을 고려하지 않았다. 시스템 프로그래밍 언어가 아닐 뿐만 아니라, Erlang 창고에 Elixir처럼 좋은 합병성이 없을 수도 있다.(비록 나는 확실히 내가 합병을 잘 할 수 있기를 희망하지만, 나는 아직 이 점을 진정으로 고려하지 못했다.)
나는 Calypso가 응용 프로그램을 개발하는 데 사용될 수 있기를 희망한다. 이 응용 프로그램들은 원래 Rust나 Elixir로 개발할 수 있지만, 나는 이 모든 언어를 단독으로 대체하는 것을 원하지 않는다.이것은 그것의 목표가 아니다.
칼립소도 쇠녹이나 불로장생약처럼 빠르지 않을 것이다.그것의 설계 의도는 간단하기 때문에 그것의 컴파일 속도는 틀림없이 Rust보다 빠를 것이다. 그러나 나는 그것이 이 두 언어의 성능과 특별히 비견될 것이라고 기대하지 않는다.어느 정도는 Elixir처럼 빠를 수 있지만, 비시스템 언어로서 JIT나 다른 중대한 최적화 (본 컴퓨터 코드를 포함하여 나는 현재 이 두 가지 계획이 없다) 가 없다면, 이것은 Rust의 성능과 필적할 수 없을 것이다.
칼립소 생태계의 어떤 부분?
칼립소 생태계는 몇 가지 주요 부분이 있다.한마디로 다음과 같습니다.
개인적으로, 나는 Calypso가 응용 프로그램에 사용할 수 있는 언어가 되는 것을 보고 싶다. 간단하고 복잡하며, 오프라인과 오프라인, 명령행과 도형화되기를 바란다.
나는 이것이 일어날지 모르겠지만, 나의 목표는 칼립소가 사람들로 하여금 그것을 이 점에 데려올 수 있도록 충분하게 친근하게 하는 것이다.
나는 칼립소가 어떤 사람이 되기를 원하지 않는다?
나는 Calypso가 Rust, Elixir, 자바스크립트, Python, 또는 다른 어떤 것도 대체할 것이라고 기대하지 않는다.그것의 창설은 이 점을 고려하지 않았다. 시스템 프로그래밍 언어가 아닐 뿐만 아니라, Erlang 창고에 Elixir처럼 좋은 합병성이 없을 수도 있다.(비록 나는 확실히 내가 합병을 잘 할 수 있기를 희망하지만, 나는 아직 이 점을 진정으로 고려하지 못했다.)
나는 Calypso가 응용 프로그램을 개발하는 데 사용될 수 있기를 희망한다. 이 응용 프로그램들은 원래 Rust나 Elixir로 개발할 수 있지만, 나는 이 모든 언어를 단독으로 대체하는 것을 원하지 않는다.이것은 그것의 목표가 아니다.
칼립소도 쇠녹이나 불로장생약처럼 빠르지 않을 것이다.그것의 설계 의도는 간단하기 때문에 그것의 컴파일 속도는 틀림없이 Rust보다 빠를 것이다. 그러나 나는 그것이 이 두 언어의 성능과 특별히 비견될 것이라고 기대하지 않는다.어느 정도는 Elixir처럼 빠를 수 있지만, 비시스템 언어로서 JIT나 다른 중대한 최적화 (본 컴퓨터 코드를 포함하여 나는 현재 이 두 가지 계획이 없다) 가 없다면, 이것은 Rust의 성능과 필적할 수 없을 것이다.
칼립소 생태계의 어떤 부분?
칼립소 생태계는 몇 가지 주요 부분이 있다.한마디로 다음과 같습니다.
칼립소 생태계는 몇 가지 주요 부분이 있다.한마디로 다음과 같습니다.
당신은 그 중의 일부 방면에 익숙하지 않을 수 있으므로, 나는 그것들을 간략하게 소개할 것입니다.
Calypso 컴파일러 및 도구
Calypso 컴파일러와 도구 (
calypso
바이너리 파일 포함) 는 Calypso 프로젝트의 개발과 테스트를 통합하는 데 사용됩니다.표준 도서관
기술적으로 말하자면,Calypso는 두 개의 표준 라이브러리가 있는데 그것이 바로Atlas와Gaia이다.
Atlas는 Rust나 Elixir 등의 언어로 익힐 수 있는 표준 라이브러리입니다.
게아는 더 복잡해.이것은 기본적으로 칼립소와 오드슈스를 통합시키는 최저 요구이다.그것은 FFI 유형, 기본 유형, 언어 항목 등을 포함할 것이다.
만약 네가 그것들이 왜 이렇게 명명되었는지 알고 싶다면, 그것은 내가 명명을 잘하지 못하기 때문이다.축하합니다!
바이트 코드 가상 시스템
오드세이는 bytecode virtual machine.기본적으로 이것은 하나의 시스템이다. 이 시스템에서 완전히 기계 코드는 아니지만 완전히 원본 코드는 아닌 프로그램이나 AST의 추상적인 표현은'가상 기기'(그렇기 때문에 이름을 얻은 것)에서 실행된다. 이 가상 기기는 그가 프로그래밍한 언어가 지원하는 거의 모든 플랫폼과 호환된다(따라서 본 예에서 어떠한 platform Rust supports).현재 여러 플랫폼을 테스트할 수 없습니다. 따라서 다른 플랫폼에서 문제가 발생하면 contribute 또는 report issues을 사용하십시오!
정부에서 개발하고 유지하는 도서관
표준 라이브러리를 확충하는 것이 아니라 캘립소 생태계를 더욱 발전시키기 위해 암호화, HTTP 등에 유용한 라이브러리를 개발할 가능성이 높다.
최종적으로 라이브러리를 만들 수 있습니다. 라이브러리는 공식적으로 유지보수하는 라이브러리가 아닐 수도 있지만, 라이브러리는 Calypso의 pwntools (Python으로 CTFs를 위한 라이브러리) 의 일부분이나 전체 포트에 도착할 것입니다.
CTF에 대한 자세한 내용은
atan
에 멋진 게시물을 게재했습니다.CTF가 무엇인지, 어떻게 시작하는지!
아탄・ 19년 3월 28일・ 3분 읽기
결론
그것은 매우 긴 게시물이다.만약 당신이 어떤 잘못을 발견하거나, 어떤 문제가 있거나, 단지 칼립소에 대해 토론하고 싶을 뿐이라면, 언제든지 평론을 발표하거나, Discord (나의 Discord 계정은 Paradoxical#2936
) 에 대해 저에게 연락하십시오.a #calypso
channel Discord 서버에는 programming language design이 있습니다.
어쨌든 아침/오후/저녁/안녕히 주무세요!
- 제임스
Reference
이 문제에 관하여(칼립소가 뭐야?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/thepuzzlemaker/what-is-calypso-42o7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(칼립소가 뭐야?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thepuzzlemaker/what-is-calypso-42o7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)