자바한테 배신당함

학교에서는 자바 많이 쓴다고 자바 가르치길래 열심히 배워놨는데 회사는 C랑 파이썬 쓴다고 함 tlqkf
리눅스 공부하는 김에 C도 포인터부터 다시 공부해야 겠다

1 Like

자네가… 자바를 안 쓰는 회사에 들어간 건 말이 되고?

1 Like

제 친구들 싹다 자바 쓰는 회사 들어가고 서울대에서도 자료구조 수업을 요즘 자바로 가르치네요
투정 ㄴㄴ 결국 씨 파이썬 자바 다 써야함

1 Like

그리고 JS, Ruby(요즘 엄청 올라왔더라구요…)
근데 개인적으로는 자바, C# 보면 너무 정신이 없어서…
되도록 JS 쓰는 곳에 취업하고 싶네요…
배부른 소리일수도 있겠지만요;

그런 당신에게 자바랑 JS 둘 다 쓰는 곳을 드렸습니다.

ㄷㄷ… 지금 소프트웨어학과 2학년까지 하고 잠시 휴학 중인데 … C언어 거쳐서 Java 배운 거 토대로 복습하고 꾸준히 공부 중인데 … 요즘 언어 트렌드 추세가… 어떻게 되나용ㅇ …? Python은 너무 개성이 강해서 아직 안 건드려봤는데 파이썬 그렇게 많이 다루나용 ???

저도 취업 알아보고 있는 중이라 그냥 느낌상으로 단순 숫자만 보면…
Java > SQL > python >>JavaScript, C++ 이런 느낌입니다만…
그 안에서도 각자 분야가 있어서 자세한거는 하시고 싶은 방향에서 찾아보시는게 좋을 것 같습니다.
JavaScript라 하더라도, 어디는 react, vue, express 요구하는게 다른 경우도 있더라구요;
크게보면 어차피 뭘 하든 JavaScript입니다만

일단 글 머리에 먼저 적기로, 언어와 관련한 고정관념 및 관련 기술 습득을 할지말지 여부에 대한 선긋기는 하지 않으시는걸 추천 드립니다. 과거 느린 언어의 대표명사였던 PHP 역시도 현재 ecommerce 구축 언어로서 상당히 많은 수의 웹사이트를 구축하는데 사용이 되고 있습니다. 지속적인 런타임 업데이트로 속도도 조금 빨라지기도 했구요.

몇년전, 신규 언어가 기하급수적으로 증가했던 기간을 넘어온 뒤로, 최근에는 기존 언어를 좀 더 보완하고 강화하려는 움직임들이 꽤 있습니다(자바제외). 해당 언어의 컴파일러나 트랜스파일러들 혹은 VM들이 보완되거나 새로 등장함에 따라 재평가 되는 언어들도 종종 있구요. 트렌드는 엎치락 뒤치락 합니다(이 역시 자바 제외).

특정 언어를 선택하여 집중 학습을 하겠다는 필요한 선택 일 수 있겠으나, 트렌드를 쫒기위한 언어 선택은 좋지 않다 생각이 됩니다.

근본적인 질문에서 너무 벗어났네요. 질문에 대한 답변 더 달아보겠습니다.

확실히 파이썬의 경우, 기존에도 매니아층이 두터웠고, 워낙 쉽고 많은 샘플 코드들의 제공으로 인하여 사용자가 나름 있었던 언어였고, 텐서플로의 등장으로 (현재는 현실적으로 케라스 말고 잘 쓰는게 있나 모르겠습니다.) 사용자가 많아진 언어입니다.

<제 개인주관 입니다>
파이썬 관련 런타임 성능 개선이 최근 몇년동안 진행 되었다고는 하나, 중간 이상 성능을 보장해야 하는 서비스 구축 베이스를 파이썬으로 만드는건 좋지 못한 선택입니다.

위에도 언급 했으나, 현실적으로 AI 레퍼런스 대부분이 파이썬으로 되어 있고, 워낙 동작 검증에 시간이 많이 들어가는 AI 특성상, 다른 사람들이 시간들여 만들어 놓은 아웃풋을 참고 하는것이 정신 건강상, 회사의 비용 관점상 득이 많습니다. 이에 관련 사업은 가능하면 파이썬으로 진행하려는곳이 많습니다.

가뜩이나 최근 메타버스 비즈니스 용어가 성행을 하면서 비즈니스 목적 성향이 더 강한 AI 서비스 니즈가 많아져버렸습니다. 일단 당분간은 일자리 숫자가 어느정도 유지 되지 않겠나 싶기는 합니다.

하고자 하는 말의 주 요지는, 파이썬은 앞서 언급했던 특정 목적을 위하여 현재 사용량이 늘고 있는 추세는 맞으나, 시스템이나 서비스를 구축하는데 메이저 언어로서는 잘 활용되지 않습니다.

<역시 제 개인 주관 입니다.>
개발자로서, 해당 언어를 사용 할 줄 알면 당연 좋고, 프로젝트 진행 경험이 있는것 또한 좋습니다. 다만 커리어의 메인 뼈대가 파이썬과 관련한 경험위주로 구성되는건 추천드리지 않습니다.

저 스스로 답을 달면서 모순적인 부분이 있는가 싶기도 합니다. 언어에 대한 고정관념을 가지는 것은 좋지 않지만 특성과 트렌드를 이해하는것은 중요합니다. 트렌드를 쫒아 분야를 선택하기 보다는, 새로운 분야를 해야 할 때 새로 배워야 하는 부분을 최소화 하는 빌드를 하시는걸 추천 드립니다.

썼던 답글 중, 의문갈만한 내용 몇가지 조금 더 정리를 해 보면요…

Q. 왜 파이썬을 통해 시스템이나 서비스 구축하는데 에이저 언어로서 잘 활용되지 않는가?
Q. 왜 파이썬을 통해 중간 이상 성능을 보장해야 하는 서비스 구축 베이스로 만드는게 좋지 못한 선택인가?

  • 첫째로, 런타임이 느립니다. 루프 사이즈가 조금 되는경우, 연산이 하나 들어가고 안들어가고 차이가 체감이 될 정도로 성능이 좋지 못합니다.
  • 둘째로, 진정한 의미의 multithreading 구현이 없습니다. 연산을 asynchronize 할 수는 있으나, parallelize 할 수는 없습니다. (Confused, are languages like python, ruby single threaded? unlike say java? (for web apps) - Stack Overflow)
  • type strong한가, 컴파일타임에 에러가 잡히는가는 개발에서 참 중요한 요소들 입니다. 단순히 프로젝트 규모가 커졌을때 생산성, 유지보수 용이성 정도에서만 그치는것이 아니라, 이 요소들로 인한 컴파일러의 최적화 한계 혹은 구현 가능한 기능의 한계에도 영향을 미칩니다.

Q. 그렇다면 텐서플로나 케라스도 느리겠네요?

  • 우선 학습 연산과 결론을 내리는 연산 자체는 빠릅니다. 내부는 파이선 코드가 아닌, 하드웨어 연산을 사용합니다. (ex. GPU) 다만, AI관련 코드를 해보셨다면 아시겠지만, 학습을 위한 data align이라거나, 결과값을 의미있게 정제하는 코드는 여전히 python으로 작성 해야 합니다. 이 부분은, 다른 언어로 작성된 서비스가 data만 전달 해 주고, tensor modelling과 데이터 입출만을 python으로 하여 개선 할 수 있고, 케라스 interface를 타 언어 및 프레임워크에서 사용 할 수 있도록 wrapping한 library를 활용하는 방법도 있습니다.
  • 결론적으로 느리고 속터집니다. 다만 앞서 언급했던바와 같이, AI관련 손쉬운 레퍼런스 확보와 AI 경력자들이 대부분 python을 사용하는 관계로 대부분 python을 사용하고 있습니다.
  • AI 한정으로 framework 선택권이 많이 없는편입니다. CNTK같이 C++/C#을 메인 대상으로 한 좀 더 빠른 framework도 있습니다. 참고로 저는 CNTK와 케라스 두개 다 써봤는데, 성능적으로 CNTK가 압도적으로 빨랐습니다. 다만, 그때 당시 사용했어야 했던 model이 convolution과 LSTM(혹은 pure RNN)이었는데, CNTK에 내장된 시계열 모델이 없고, MS에서 CNTK 지원 중단을 하여 케라스로 옮겨갔었네요… 참고로 C#으로 케라스 wrapping 해서 썼습니다.

여담이긴 하지만, 제 지인들 회사에서는, 대부분 처음에는 시험 목적으로 python 통해 프로토타입 제작 뒤, production 목적으로 다시 만들겠다고 공표하고 프로젝트 시작 한 회사들도 있었는데, 다들 결과적으로는 python 언어 기반의 케라스로 정착했습니다…