2020년 서버를 구축하기 위해 PureScript가 가장 적합한 네 가지 이유

오늘 함수식 프로그래밍 Slack의 #purescript 채널에서 나는 "purescript는 2020년에 서버를 구축하는 가장 좋은 선택이라고 생각한다"고 썼다.이에 피터 앤더슨이 물었다.

Wow! What are the key things in your eyes that make it the best?


지금, 만약 이것이 블로그 초대가 아니라면, 나는 무엇인지 모른다!
따라서 PureScript가 2020년 서버를 구축하는 가장 좋은 방법이라는 네 가지 이유가 있습니다.할 수 있다.그것들을 여기에 두지만, 너도 남아 있어야 한다. 왜냐하면 마지막에 또 다른 이유가 있기 때문이다!
  • 안녕 월드
  • 휴대성
  • 언어
  • 커뮤니티

  • 안녕 세상
    PureScript에서 서버를 시작하고 실행하는 데 걸리는 시간은 JavaScript와 Python의 hello-world 서버와 마찬가지로 빠르다.Meeshkan에서, 우리는 항상 창고의 어떤 무작위 부분에 서버를 내놓아야 한다. 내 손가락은 Node+Express나 Python+Flask처럼 PureScript+부하조에 빠르게 들어갈 수 있다.
    npm init -y
    npm install purescript spago xhr2
    init
    spago install payload
    spago build
    
    그런 다음 src/Main.purs에 붙여넣기
    module Main where
    
    import Prelude
    import Effect (Effect)
    import Effect.Aff (Aff)
    import Payload.Server as Payload
    import Payload.Spec (Spec(Spec), GET)
    
    type Message
      = { text :: String }
    
    spec ::
      Spec
        { hello ::
            GET "/hello"
              { response :: Message
              }
        }
    spec = Spec
    
    hello :: {} -> Aff Message
    hello _ = pure { text: "world" }
    
    main :: Effect Unit
    main = Payload.launch spec { hello }
    
    그런 다음 bash에서 다음을 수행합니다.
    spago run
    
    해봐curl http://localhost:3000/hello, 돌아와{"text": "world"}.
    이 패키지Payload는Purescript로 서버를 구축하는 몇 가지 방법 중 하나입니다Hyper.GraphQL 및 OpenAPI와 함께 사용할 수 있는 라이브러리도 있습니다.
    방금 임무를 완수한 부서에서 퓨어스크립트는 자바스크립트, 파이톤, 고 등 언어와 경쟁한다.다음에 서버를 시작해야 할 때, PureScript가 곧 시작될 수 있다는 것을 기억하세요!

    휴대성
    PureScript는 다양한 언어의 프런트엔드입니다.JavaScript, Go, Python, Erlang,Haskell, C++로 컴파일할 수 있으며, 단지 몇 가지 예를 들 수 있다.따라서 PureScript에서 동구 노드 + 브라우저 개발이 이렇게 유행하는'한 번 작성, 어디서나 사용'이념을 더욱 강하게 한다.또한PureScript는 전송만 하기 때문에run 명령의spago run에 추가package.json를 통해 Heroku, Vercel 또는 GCP 등 환경에 배치할 수 있다.
    서버가 Python의 ML 모델이나 자바스크립트의killer 라이브러리에 접근해야 한다면, PureScript의 외부 함수 인터페이스는PureScript와 목표 언어 사이의 빈틈없는 상호작용을 허용합니다.예를 들어, PureScript에서 다음을 수행할 수 있습니다.
    -- Main.purs
    module Main where
    
    foreign import hello :: Int -> Effect String
    
    그리고 같은 폴더에서 하나만 찾으면 됩니다Main.js:
    // Main.js
    exports.hello = (i) => () => `${i}`
    
    PureScript에서 자동으로 연결합니다.
    서버를 언어 X에서 언어 Y로 마이그레이션해야 할 경우 대부분 PureScript로 작성되어 기뻐할 것입니다.나는 최근에 Web Audio에서 이런 경험을 한 적이 있다. 나는 PS->Java Script로 개념 증명서를 작성했고, 디버깅 가능성을 희생하는 대가로 성능을 향상시킬 준비가 된 후에 PS->Wasm을 만들었다.

    언어
    PureScript는 Haskell, Idris, Agda, Coq와 같은 언어에 속한다.이러한 언어는 일을 증명하기에 적합하기 때문에 진정으로 똑똑한 사람들이 왕왕 몰려온다는 것은 토론이 통상적으로 매우 격렬하고 초보자는 길을 잃기 쉽다는 것을 의미한다.
    그러나 이런 토론은 함수식 언어가 다른 언어보다 입문하기 어렵지 않다는 사실을 덮어 놓았다.정수를 늘리고 0보다 작은 값을 빈 값으로 되돌려 주는 함수를 작성해야 한다고 상상해 보세요.Python의 구현을 PureScript의 구현과 비교합니다.
    def posinc(i):
      return None if i <= 0 else i + 1
    
    posinc i = if i <= 0 then Just i else Nothing
    
    나는 이미 많은 프로그래머들 앞에서 이러한 로사타석의 예를 보여 주었지만, 그 중 하나가 다른 사람보다 천성적으로 더 어렵다고 생각하는 사람을 아직 찾지 못했다.
    만약 내가 도박꾼이라면, 나는 Haskell 언어 가족이 덧붙인 유형의 안전성과 깨끗하고 읽기 쉬운 코드가 생산 과정에서 당신을 위해 많은 버그를 절약하고, 영원히 다른 어떤 것도 사용하지 않을 것이라고 확신한다.하지만, 에이, 나는 내기를 하지 않겠다.내가 여기서 말하고자 하는 유일한 점은, 너는 10년 동안의 소프트웨어 개발 경험을 가지고 PureScript를 모색할 필요가 없다는 것이다.일어나서 달리기를 하는 것과 파이톤을 배우는 것은 다를 것이 없다.
    ...FP를 좋아하는 여러분에게는 짧은 내레이션입니다. 그들은 맹세를 굳게 할 것입니다.PureScript는Haskell처럼 기능이 완비되지 않고, Idris/Agda처럼 상자를 열면 바로 사용할 수 있는 유형도 없지만, 현실 세계의 응용 프로그램에서 당신이 진정으로 하고 싶은 일을 대부분 완성할 수 있는 아주 간단한 기능 집합을 가지고 있다.또한 Heroku, Vercel 또는 AWS Lambda에 쉽게 배치할 수 있습니다.

    커뮤니티
    PureScript 커뮤니티에는 활발하고 무독하다DiscourseSlack의 커뮤니티가 있는데 남을 돕는 것을 좋아하는 사람들로 구성되어 서로의 질문에 대답하고 자원을 공유한다.또한 대부분의 기본 서버에 필요한 라이브러리는 Pursuit에 충분한 문서를 작성했고 새로운 아이디어를 모색해 왔다.
    많은 PureScript 프로그래머들도 dhall를 JSON의 대체 설정으로 사용한다.위에서 설명한 대로 spago 을 사용하면 dhall 디렉터리에서 dhall 파일을 볼 수 있습니다.오류configuration bug를 겪은 모든 사람에게 프로젝트 초기에 정확하게 설정하는 것이 중요하다는 것을 알고 있다.PureScript+Dhall은 이 방면에서 비길 데 없는 조합이다.

    보너스
    보너스 줄게, 줄게.Meeshkan는 기회가 균등한 테스트 인원이지만 만약에 OpenAPI 규범이나GraphQL 모델 등 일부 자산을 저희에게 제공한다면 저희는 서비스에서 추가 기능을 사용할 것입니다.또한 특정 언어 유형의 도구를 사용하여 더 강력한 테스트를 만들 수 있으며, PureScript도 목록에 있습니다.따라서 PureScript를 사용하면 Meeshkan은 귀하의 서비스를 더욱 쉽게 테스트할 수 있습니다.스택이 점점 더 성숙해지면서 소스 코드인 PureScript 라이브러리를 정기적으로 개방하여 더 좋은 서버를 구축하고 더 강력한 테스트를 작성할 수 있도록 돕습니다.

    결론
    PureScript는 여전히 초기 채택자 모델에 있고 지역사회 규모가 매우 작다.처음에 나는 개인적으로 시도하고 싶지 않았다. 왜냐하면 나는Haskell을 사용하는 의미를 이해하지 못했기 때문이다.그러나 개발/배치의 속도, 유한한 기능 집합과 이식성은 나로 하여금 마음속으로 탄복하게 한다.다음에 서버를 구축할 때, 심지어 현재 서버에서(PureScript 컴파일 언어를 사용한다면)PureScript를 시도해 보세요!

    좋은 웹페이지 즐겨찾기