관리 메뉴

엘키의 주절 주절

프로그래밍 언어 이야기 본문

BlahBlah

프로그래밍 언어 이야기

엘키 엘키 2016.04.20 17:26

내가 가장 자신 있는 언어는 C++이다.

가장 오랜 시간을 사용해왔고, 가장 많은 코드 작성을, 분석을, 테스트를, 서비스를 해왔던 언어기 때문이다.


다음으로 익숙한 언어는 ruby다.

ruby를 통한 scripting, rails를 기반으로 한 web_service 등 C++ 다음으로 익숙하다고 볼 수 있다.


그 다음 언어는 C#.

unity에서도 c#, 간단한 툴 작업이나 TCP client, server 작업 등 몇 가지 작업들을 진행했다.


이외에도 이전부터 간단하게 사용 가능하던 언어는 몇 가지 있다.


php : 너무 오래전에 사용했다. 특히나 다른 분이 작업해두신 GM툴 기능 유지보수와, 게시판 하나 만들어본 정도였고, 최근 발전 방향을 보면 기대해봄직은 하지만...


perl : 써본지도 너무 오래… 특히 ruby를 익히고 난 이후는… 이제와서 perl의 학습을 하는건, 포트란, 파스칼, 코볼 같은 녀석을 놓지 못했던 익숙한 언어에 대한 미련처럼 비추어 질 수도 있단 생각도 든다.

어떤 측면으로 봐도 ruby와 python이 너무 잘 대체했으니 말이다.


erlang : 함수형 언어의 개념과 이해도를 위한 학습 정도?

조금 더 깊게 파고 들고자 할 땐 erlang보다 go lang이나 elixir를 사용해보고 싶다.


java script : 그래도 꽤 많이 사용한 편이다. WScript라는 스크립트 파싱 엔진을 통해 윈도우에서 batch script를 병행해 사용 해왔고, 실제 프로젝트에 적용했었으니… node.js를 통해서도 사용해보았으나, java script의 장점을 잘 모르겠다.


java script 처럼 자유도가 높은 언어를 서버 사이드에서 사용할 때에는, 분명히 보완재 (unit test 강제) 등이 필요 할텐데... 콜백 지옥을 탈출하는 방법도 많이 있고, typescript처럼 타입 자유도를 극복하는 방법도 있지만, 이런 많은 우려를 딛고 극복해야 할만큼 매력있는 언어인지는 잘 모르겠다.



이런 경험 들을 기반으로 가장 관심이 간 언어는… Go다.

정적 언어의 효율성과 동적 언어의 쉬운 적용이 장점이라고 하더라.


Go 프로그래밍 위키

https://ko.wikipedia.org/wiki/Go_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)


Go는 정적 타입 컴파일 언어의 효율성과 동적 언어처럼 쉬운 프로그래밍을 할 수 있도록 하는 것을 목표로 한다. 또다른 목적은:

  • 안전성 : 타입 안전성과 메모리 안전성

  • 병행성과 통신을 위한 훌륭한 지원

  • 효과적인 가비지 컬렉션

  • 빠른 컴파일


위와 같은 장점을 가지고 있다고 한다.

한번 웹 서버로 작업하면서, 어떤 장단점이 있는지 좀 더 느껴보고 싶다.


또 관심이 가는 언어가 있는데, 바로 scala다.

java api와 손쉽게 연동이 되며, 객체 지향 프로그래밍과, 함수형 프로그래밍의 장점을 잘 섞었다고 평가 받는 scala도 써보고 평가하고 싶다.


https://ko.wikipedia.org/wiki/%EC%8A%A4%EC%B9%BC%EB%9D%BC_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)#cite_note-singleton-8


대부분의 스칼라 관련 문서들에서 스칼라와 자바의 연관성을 '너무 바빠서 다른 언어를 따로 배울 시간이 없는 자바 프로그래머를 위한'[5] 이라는 표현을 사용하여 나타낼 정도로 비슷한 부분이 많이 나타난다.


문제는 아직 내가 java를 능숙하게 사용하지 못한다는 점이다. 그렇다면 왜 스칼라? 바로…! ruby와 유사한 코딩이 가능하기 때문이다.

실제로 루비의 영향을 받았고 (위키 참조), 타입이 없는 언어이기도 하다. 또한 모든 것은 객체이기도 하다는 말은 스칼라에서도 통용된다.


루비의 단점은 성능 문제라거나, 비동기 작업의 리스크를 줄여줄 수 있는 언어란 생각이 든다.


현재의 두 언어를 살펴보는 이유는, rails의 성능 적인 이슈를 해결하려는 시도가 두 언어 위주로 이루어졌기 때문이다.


나 역시 rails의 장단점을 겪어본 입장에서, 크게 공감 되는 문제기도 하고.


과연… ruby의 뒤를 잇는 내 주력 언어가 이 두 언어 중에서 나오게 될까?

0 Comments
댓글쓰기 폼