kenu
38k
2017-05-19 23:44:31.0
21
1437

자바는 안 된다


태생의 한계

3
1
  • 댓글 21

  • aeba
    987
    2017-05-19 23:56:21.0 작성 2017-05-20 00:01:25.0 수정됨

    저도 한참 그렇게 생각했지만…

    다르게 생각하는 사람 말도 듣다보니 뭐가 맞는지 모르겠습니다.


    이 글의 배경을 좀 알 수 있을까요 ㅎㅎ

    0
  • kenu
    38k
    2017-05-19 23:57:28.0

    It's a long story..;

    0
  • christias
    2017-05-19 23:59:22.0

    저도 저 태생적인 한계라는 점에서 궁금합니다 ㅎ

    0
  • aeba
    987
    2017-05-19 23:59:42.0

    저 맥주캔이랑 과자 땄습니다.

    0
  • lllllllllllllll
    3k
    2017-05-20 00:00:14.0

    기계어는 안 된다

    태생의 한계


    010011010 ... (It's a long story)

    0
  • aeba
    987
    2017-05-20 00:05:55.0

    태그에 힌트가 있는거 같은데...

    UTF-16이랑 관련이 있는건가요?


    0
  • mongs
    -5
    2017-05-20 00:13:28.0

    외국의 어느 개발자가 그랬네요.

    이제 프로그래밍 언어는 나올대로 다 나왔고

    요즘 신생 언어는 다른 언어에서 살을 더 붙인 언어들일 뿐이다고....

    통합된 언어를 만들어야 한다고 하더라고요.

    우리나라에서는 그래도 자바를 오랫동안 버리지 못하지 않을까 생각해봅니다.


    0
  • aeba
    987
    2017-05-20 00:25:24.0

    @mongs 공격하려는건 아닙니다만 통합된 언어라는건 간단하게 생각해봐도 말이 되지 않네요.


    통합된 언어는 아마 존재하는 모든 추상화를 다 지원해야 할 겁니다. 다중패러다임 언어... 대표적인게 뭐가 있을까요? C++? 스칼라? 커먼 리스프? 이런 언어들은 자신들이 가진 그 많은 추상화에 발목을 잡힙니다. 똑같은 목적으로 쓴 코드가 사람에 따라 너무나도 다를 수 있으니까요. 어렵기도 무지하게 어렵죠.


    반대로 하나의 패러다임만을 지원하는 언어... 자바, 하스켈, 얼랭... 이런 언어들은 범용이라고 하기 어렵습니다.


    마찬가지로 프로그래밍 언어가 나올대로 다 나왔다는건 그 글쓴 프로그래머가 현대 프로그래밍 언어의 발전에 무지해서 한 발언이라고 생각됩니다...

    0
  • 조프로
    1k
    2017-05-20 00:53:43.0 작성 2017-05-20 00:56:49.0 수정됨

     aeba //

    모든 추상화를 지원한다는게 무슨 뜻이죠?

    그리고 패러다임이라는게 이름 붙이기 나름이지 명확하게 구분하기도 어려운 개념이죠. 그런 의미에서 요즘 많이 쓰이는 프로그래밍 언어의 구조가 대다수 비슷한건 사실이기도 합니다.

    그리고 자바가 범용이 아니라면 뭐가 범용인지.. 사실 우리가 일반적으로 떠올릴 수 있는 C, C++, Java, C#, Python같은 언어들은 전부 범용의 분류 안에 들어갑니다.

    0
  • _사이언티스트_
    357
    2017-05-20 01:04:02.0

    맞습니다..

    코어로 접근해야 합니다...

    OS의 근간을 이루는... 코어로.. 즉 커널이곘죠... 게를 잡으면 나머지 곁 가지들은..

    자동으로 딸려옵니다.

    0
  • aeba
    987
    2017-05-20 01:09:09.0 작성 2017-05-20 02:35:33.0 수정됨

    조프로 //

    여러 추상화를 지원한다는건, 한 언어가 그것을 사용하는 프로그래머가 원하는 패러다임으로 코드를 짤 수 있게 하는걸 지향하는지 지양하는지의 차이인거 같습니다.

    예를 들면 자바에서 클래스없이 프로그래밍하기란 불가능하지만 C++에선 충분히 가능하죠.


    좀더 광범위하게 말하면 언어가 하나의 일을 할 때 사용할 수 있는 방식에 제약을 두는걸 목적으로 하는지, 그 반대를 목적으로 하는지의 문제라고 생각합니다. 이런게 다들 그렇듯 칼로 자르듯이 자를 수 있는건 아니지만 극명하게 대비되는 예를 들어보자면 C++이랑 파이썬의 철학이 있겠네요.


    C++의 발명가 바야네 스트로스트롭이 말한 C++의 철학중에 이게 있습니다.

    "Allowing a useful feature is more important than preventing every possible misuse of C++."

    C++에서 쓸모있는 기능을 추가하는것은 C++ 의 기능들을 부적절하게 사용할 가능성을 차단하는 것보다 더 중요하다.


    반면에 파이썬의 Zen of Python에는 이런 구절이 있죠
    "There should be one—and preferably only one—obvious way to do it."

    어떤 일을 처리할 가장 뻔한 방법은 최소 한가지는 있어야 한다(단 하나만 있는게 더 좋다).

    0
  • 앙앙이
    1k
    2017-05-20 02:48:27.0

    // aeba

      "c++ 의 철학" 이라는 단어를 말한 순간

    본인이 원하던 원하지 않던 종교 논쟁 하자는 말이 되어 버렸습니다.

    우리 서로 오키에서 종교 전쟁은 하지 맙시다.

    인간적으로 부탁드립니다.

    0
  • aeba
    987
    2017-05-20 02:56:38.0 작성 2017-05-20 03:35:26.0 수정됨

    @앙앙이

    무슨 말씀이신지 잘 이해하기 힘듭니다.

    C++을 만든 사람은 자신의 발명품을 구상할때 이런 철학을 가지고 만들었다... 그리고 Python의 철학을 잘 설명한 글에는 정반대의 글귀가 담겨있다...따라서 프로그래밍 언어는 설계한 철학에 따라 크게 다르다...

    이 설명이 어떻게 종교 전쟁이 되는건가요?


    @조프로

    "그리고 패러다임이라는게 이름 붙이기 나름이지 명확하게 구분하기도 어려운 개념이죠. 그런 의미에서 요즘 많이 쓰이는 프로그래밍 언어의 구조가 대다수 비슷한건 사실이기도 합니다."

    패러다임이란게 물론 갖다붙이기 마련이긴 하지만, 위에 예를 든 자바, 하스켈, 얼랭이 정말 다르다는걸 부정하기도 힘들죠.

    대세가 되고 주류가 된 언어는 비슷할지 모르겠지만 (그렇게 된 이유야 생각해보면 간단하죠... 사람들은 게으르고 새로운거를 두려워하니까요) 존재하는 모든 프로그래밍 언어를 보면 정말 별의별 것들이 다 있습니다.


    "그리고 자바가 범용이 아니라면 뭐가 범용인지.. 사실 우리가 일반적으로 떠올릴 수 있는 C, C++, Java, C#, Python같은 언어들은 전부 범용의 분류 안에 들어갑니다."

    자바가 범용이 아니라고 한게 약간 오해의 소지가 있는 말인 것은 인정합니다. 저도 많은 언어들이 일반적인 의미로 범용 언어인 것이 맞다고 생각합니다.

    위에서 제가 말한 범용은 가상의 '유일하게 존재하는 통합된 언어'가 가져야만 하는 범용성입니다. 조프로님의 언어 리스트에서 예를 들자면 자바는 많은 종류의 이용목적에 적합하지만 쉘 스크립트라던지, 99.9999999%의 업타임을 가지는 멀티쓰레드 서버라던지, 이런거를 짜기에 그닥 적합한 언어는 아닙니다. 자바는 객체지향(그것도 특정한 객체지향의 한 종류) 패러다임을 지원하는 언어고, 그 패러다임으로 설계하기에 적합하지 않은 문제들이 분명히 존재한다는 의미로 적은 말이었습니다.


    0
  • 앙앙이
    1k
    2017-05-20 03:27:45.0

    // aeba

    종교 논쟁할 의도 없고 하지 않는다면 아무런 문제 없습니다.

    노파심에 한 말이니 개념치 마시기 바랍니다.

    0
  • kenu
    38k
    2017-05-20 03:28:44.0 작성 2017-05-20 05:20:47.0 수정됨

    9A

    10011010

    0
  • aeba
    987
    2017-05-20 03:37:56.0

    잠이 안와서 댓글다는 제가 밉지만

    154에요

    0
  • kenu
    38k
    2017-05-20 03:48:34.0 작성 2017-05-20 05:20:27.0 수정됨

    "0 1001 1010" 09a으로 보여서 ㅈㅅ

    1
  • fender
    9k
    2017-05-20 05:52:48.0 작성 2017-05-20 06:01:37.0 수정됨

    전 자바의 마지막 희망은 썬이 IBM 대신 오라클에 자바를 팔았을 때 끝났다고 생각하기 때문에, 태생적 한계 보다는 후천적인 문제가 더 크다고 느끼긴 합니다.

    한 때 대세로 자리 잡은 언어지만, 썬의 무능에 오라클의 탐욕까지 합쳐지니 버틸 수가 없네요.

    코틀린(Kotlin)이 안드로이드의 공식 언어가 된 것은 스칼라(Scala) 같은 경쟁 언어에도 상당한 타격이 되겠지만, 안드로이드 지분 덕에 급격한 하락세를 면했던 자바의 경우는 관에 못질을 하는 것과 같은 의미가 아닐까 싶습니다.

    안드로이드에 새로운 공식 언어가 생겼다는 의미는, 무엇보다 새로 프로그래밍을 배우는 개발자들이 자바를 첫번째 언어로 선택할 이유가 완전히 사라졌다는 뜻입니다.

    데스크탑이나 게임 분야에선 한 번도 진지하게 받아들여진 적이 없고, 서버에서는 자바스크립트 등에 밀려버렸고, 유일하게 안드로이드에서만 '개발을 하려면 자바를 써야한다'는 논리가 통했는데 이젠 그 이유도 사라진 것입니다.

    몇 년 전까지 자바를 다뤘고, 한 때 C#/닷넷보다 자바가 성공하기를 응원했던 입장에서 안타까운 마음만 듭니다.

    0
  • 안드로더
    529
    2017-05-20 06:10:42.0

    자바는 시기적절한 언어 일뿐 뭐 별거 있겠습니까.

    항간이 이런 말이 있는거 같은데,

    'c/c++ 은 하드웨어에 접합하게 설계되었다. 빠르다. 자바와는 다르다'

    저는 이렇게 생각합니다.

    'c/c++ 은 사용자를 고려하지 못한 실패한 언어, 즉 "프로토타입(샘플)" 언어'

    그냥. 만들다 보니 그 때 당시 최선의 방법으로 만든것일 뿐이지 않나 싶습니다.

    자바는 개발자 중심의 언어라고 생각합니다. 겁내 편하지요.

    c# 의 경우도 모든 비난을 뒤로하고 자바와 같은 패러다임을 추구하는 언어이고..

    (무려 ms 가 고딴선택을 했습니다.)

    swift 또한 자바 비슷합니다. (근데 좀 이상하게 따라해서 x 같은 syntax 구조가 완성됨.)


    그러니 결론은 자바보다 더 업글된 언어(무료)가 등장하여 우리를 구원해주어야 합니다.


    0
  • Be Head
    1k
    2017-05-20 10:22:41.0

    위에 언급하신 내용 중에

    kotlin 이 안드로이드 공식 언어에 추가가 되었고

    java랑 kotlin이 연게되어서 소스를 섞어서도 사용이 가능하고 jvm 위에 구동에

    소스 코드가 더 간결해진다는 장점이 있다고 들었습니다

    안드로이드 뿐아니라 웹에도 쓰여진다는 글을 본것같은데;; 음 출처가 안보이네요

    개인적으로 점점 kotlin 의 입지가 넓어지면 java가 위험해 질 것 같네요

    0
  • 안드로더
    529
    2017-05-20 12:12:01.0

    jvm 에 돌아가는 코틀린..

    jvm 에 종속될 거면 자바 쓰지 피곤하게 왜 코틀린 써야하는지 이해안됨.

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