HJOW
7k
2022-07-21 17:19:53
17
2050

구글은 Go 에서 만족하지 못했다


https://n.news.naver.com/mnews/article/092/0002263159?sid=105


구글이 C++를 대체하기 위한 실험적 오픈 소스 프로그래밍 언어 카본(carbon)을 공개했다.

20일(현지시간) 구글의 챈들러 캐러스 오픈소스 엔지니어는 캐나다 토론토에서 열린 개발자 컨퍼런스 C++노스(CPP North)에서 카본을 소개했다.

카본은 1985년 공개 후 전 세계에서 가장 많이 쓰이는 프로그래밍 언어 중 하나인 C++를 대체하는 것을 목표로 한다. 수십 년에 걸친 기술 발전을 감당하지 못해 개발자의 요구 사항을 충족시키는 데 C++가 어려움을 겪고 있기 때문이다.


...

0
  • 댓글 17

  • 하마
    8k
    2022-07-21 17:43:34 작성 2022-07-21 18:57:23 수정됨

    러스트보다 깔끔해보이고 C++과 비슷해 상호운용성이 높다는 점이, 
    자바를 대체(?) 하려다 실패 중인 스칼라 대신 자바와 친밀한 코틀린은 성공하고 있다는 점을 상기하면
    시간이 지나면서  러스트를 앞서 나가리라 보이네요, 영리한 전략 같습니다.

  • 오리아재
    27
    2022-07-21 18:59:29 작성 2022-07-21 19:01:14 수정됨

    스칼라 언어는 자바와 호환 가능한 진지한 함수형 프로그래밍 언어입니다. 자바를 대체(?) 하려고 만든 언어가 아닙니다. 반면에 코틀린은 자바와 같은 범용 객체지향 언어입니다. 코틀린도 자바도 제한적인 함수형 프로그래밍이 가능할 뿐 진지한 함수형 프로그래밍 언어는 아닙니다. 평범한 앱을 만들 때는 자바나 코틀린 같은 범용 객체지향 언어가 적당합니다. 매우 복잡한 데이터 처리나, 매우 대규모 병렬성을 구현할 때 진지한 함수형 프로그래밍 언어가 적당합니다. 즉 대규모 빅데이터 시스템 분야가 스칼라 언어의 영역입니다.

  • 하마
    8k
    2022-07-21 20:17:43 작성 2022-07-22 12:18:33 수정됨

    오리아재 

    1990 후반 - 2000년대 초반 오더스키는 자바에서 한계를 보았고,
    2000년대 중반 스칼라가 발표될 당시 자바의 문제점이 제작의 의도 중 하나 였으니, 
    여러가지 진보를 보여준 이 언어를 통해 자바를 대체 하고자 하는 의도가 있었을 지 없었을지 딱 잘라 말 할 수 없습니다.

    오더스키는 Scala를  개발자들이 더 쉽고 더 생산적으로 개발하게 하려고 만들었습니다.(본인이 말함)
    즉 처음 만들 때 범용을 목적으로 만든 거란 겁니다.

    아마 최근에 스칼라를 접하신 거 같은데 현재 스파크등 빅데이터 처리에서 주로 쓰이니까 그렇게 오해 하실 수 있겠지만  그냥 시간이 지나면서 사용처가 비교적 협소해 진 것일 뿐이죠. 

    5-10년전만 해도 스칼라는 프론트엔드,백엔드,미들웨어에 일반적으로 사용 할 수 있는 언어로 주목 받았습니다. PlayFramework, Akka등이 사용되기도 하였는데 (저도 다양한 목적으로 사용하였고) 
    결국 대중성을 갖지 못한 채 점점 점유율이 많이 축소 되고 있죠.


    그리고 위에서 말한 성공/실패는 대중성이라는 전제하에 말하는 것이라고 이해해 주시면 될 거 같습니다.

  • 하마
    8k
    2022-07-21 20:22:33

    아 그리고 스칼라는 진지한 함수형 프로그래밍 언어가 아닙니다. ^^
    스칼라는 객체지향과 함수형 양쪽을 모두 가져가려는 욕심 많은 언어입니다.
    JVM 기반하에 함수형쪽으로 치우친 언어는 Clojure 언어입니다.

  • Ric
    280
    2022-07-22 09:29:08

    아직 초기 단계여서 그런지는 모르겠지만, 솔직히 C++로 주로 개발을 해왔고 지금도 하고 있는 입장에서 저 언어의 장점이 무엇인지 모르겠습니다. 그냥 다르게 C++을 적는 방법이랄까요...?  

  • 하마
    8k
    2022-07-22 11:27:23

    Ric  / 

    C++의 문제는 아래와 같습니다. 

    1. 리소스를 직접 할당,해제하면서 생겨나는  문제점들 
    2. 멀티쓰레드에서 레이스,데드락 문제등 
    3. 
    편리한 빌드,의존성관리 표준 시스템 부재. 
    4. 표준 라이브러리의 다양성이 자바에 비해 협소 

    러스트가 C++와 동일한 성능을 보여주며, 동시에 저
    것들을 경감시키기 위한 목적으로 나왔으니
    Carbon도 목적은 같습니다. 다만 해결하는 방식이 조금 다른거 같습니다. 

  • HJOW
    7k
    2022-07-22 11:31:35

    기존 C++의 코드를 최대한 수정하지 않으면서도

    하마님이 말씀해주신 4가지 문제를 같이 해결하려는 요량인 듯 하죠.

    차라리 이름을 C+++ 이렇게 지었으면...

    -1
  • 앤트울프
    489
    2022-07-22 13:29:54

    Go랑은 가는 방향이 다른것 같은 느낌...

  • 오리아재
    27
    2022-07-22 13:58:55 작성 2022-07-22 15:23:08 수정됨

    하마 /

    "스칼라 언어는 자바와 호환 가능한 진지한 함수형 프로그래밍 언어입니다. "

    위 말에 대해 좀 더 자세히 설명드리자면


    스칼라 언어 개발 목표는 다음과 같습니다

    (1) 자바와 호환 가능

    자바와 양방향 상호연동 가능하고

    자바처럼 OOP 가능한 언어를 만들자


    (2) 진지한 함수형 프로그래밍

    join calculus + functional petri net 컴퓨터 사이언스 이론은

    asynchronous, distributed 연산을 수학적으로 기술하기 위한 수학적 모델링 언어입니다.

    이 이론에 기반한 함수형 프로그래밍 언어를 만들자는 학술 연구 프로젝트에서

    스칼라가 만들어졌습니다.


    따라서 위 목적으로 만들어진 스칼라는 당연히

    asynchronous, distributed 연산 문제를 

    진지한 함수형 프로그래밍 기술로 구현하는 분야에서 활발하게 사용되고 있습니다.


    그런데 이런 진지한 함수형 프로그래밍은 비교적 어렵고 진입 장벽이 높기 때문에

    자바가 적당한 평범한 프로젝트에는 스칼라보다 코틀린이 어울립니다.


    물론 자바도 코틀린도 함수형 프로그래밍을 지원하지만, 스칼라처럼 진지하지는 않습니다.


    그리고 사족을 덧붙이자면,

    stackoverflow,com 조사에서 2021년, 2022년 연봉 1위 언어가 스칼라입니다.


  • 오리아재
    27
    2022-07-22 15:16:27 작성 2022-07-22 15:31:52 수정됨

    하마 /


    "오더스키는 자바에서 한계를 보았고,

    2000년대 중반 스칼라가 발표될 당시 자바의 문제점이 제작의 의도 중 하나 였으니 "


    예. 자바의 단점을 개선하기 위해 스칼라를 개발한 것이 맞는데요, 그런데 그 단점이 뭐냐면,

    join calculus를 구현하려는 학술 연구 프로젝트에서

    처음에는 자바 OOP로 구현하려고 했는데, 실패했죠.

    그 실패에서, 자바 OOP에 추가로 진지한 함수형 프로그래밍 요소가 필요하다는 것을 깨닫고,

    새로 만든 언어가 스칼라입니다. 

    당연히 join calculus 구현에 성공했고요.



  • 하마
    8k
    2022-07-22 15:42:26 작성 2022-07-28 18:18:34 수정됨

    오리아재  / 

    무엇을 말 하고 싶은 건지..
    첫번째 댓글, 두번째 댓글이 같은 글 같네요.


    1. 진지한 함수형 언어다를 주장하시는 건가요? 

     "진지한" 이라는 추상적인 의미에 정답은 없기에 님 생각도 틀린건 아닙니다. 그리고 연구실에서 해당 시기에 최신의 기술들을 토대로 만들어 진 것도 맞습니다. 다만 스칼라는 객체지향성을 보유한 데다가 함수형 언어의 한계가 많기 때문에 "진지한 함수형" 에 어울리지 않다고도 볼 수 있을 거 같습니다.

    2. 스칼라는 자바,코틀린처럼 범용적이 아니라 전문분야에서 특별하고 복잡하게 사용하기 위한  것이다?
     
    다시 말씀드리지만 스칼라거 현재 대중적이지 않다고 해서 만들 때 부터 그걸 목적으로 만든언어가 아니에요.
    오히려 객체지향과 JVM을 버리지 못한 채, 학술적인 면에 추가적으로 대중성을 염두해두고 탄생한 언어입니다. 
    https://www.signifytechnology.com/blog/2018/01/why-scala?source=google.com
    여기 링크에 마틴 오더스키가 스칼라를 왜 만들었지에 대해 나와 있듯이 더 편하고, 생산성을 높이기 위해서 만든 겁니다. 그래서 대중적으로는 실패하고 있다라고 말하는게 틀린게 아닌겁니다. 

    ---


    스칼라는 되게 특별한 언어인데, 대중적으로 확장하는데는 실패라고 말하는게 기분이 나쁜건 아니죠? 
    누군가에겐 클로저가 특별하고 누군가에겐 하스켈이 더 특별하고 대단합니다.
    너무 언어에 몰입될 필요는 없는거 같습니다. 그냥 객관적으로 바라보세요.





  • 오리아재
    27
    2022-07-22 15:55:21 작성 2022-07-22 16:00:54 수정됨

    하마 /

    앗! 님이 보여주신 링크 글에 제가 하고 싶었던 말이 다 들어있네요.

    https://www.signifytechnology.com/blog/2018/01/why-scala?source=google.com


    Scala's unique combination of features also made it an excellent basis for concurrent, parallel, and distributed computing, which is widely thought to be the next big challenge in software development. Scala has a lot to offer in that space: from implicit parallelism in parallel collections to explicit concurrency using actors, it offers a toolset to write scalable concurrent applications simpler and with more confidence in their correctness. Scala's functional programming genes are an advantage here, because every bit of mutable state is a potential liability when it comes to parallelism, concurrency, and distributed computing. Scala does not prevent traditional imperative solutions, but its design encourages users to search for more scalable functional alternatives.


    위 문구에 대한 좀 더 자세한 이론적인 설명은 이 동영상을 추천합니다.

    https://www.youtube.com/watch?v=T2U2Uj5fXkU


  • HJOW
    7k
    2022-07-22 16:02:57

    아니, 구글이 언어를 만들었는데

    스칼라 언어가 갑자기 뒤통수를 맞나요...

    그만 ~~

  • 하마
    8k
    2022-07-22 16:14:48
  • 쓸모있는 개발
    319
    2022-07-23 17:08:10

    댓글 주제가 산으로 가네요 ㅋㅋ

  • youngyoung
    2k
    2022-07-29 08:37:44

    언어를 도대체 몇개나 만들건지..

    하나좀 잘키우자..Go 라이브러리나 좀 늘려주세욤..

  • 심심한사부
    1k
    2022-08-09 09:51:51

    죽기전에 배우는 언어가 가장 좋은 언어가 될듯 합니다.

     



  • 로그인을 하시면 댓글을 등록할 수 있습니다.