새로운 언어를 하나 배워보려 하는데 뭐가 좋을까요?

vivisection의 이미지

지금 아는건 c, c++ , html 정도입니다
세개밖에 없군요...

그래서 언어를 좀 더 배워야겠다고 생각하고 몇개 알아봤습니다

일단 제가 전세계 최고의 에디터 emacs를 사용하고 있는데 이게 lisp 를 알아야
좀 더 제대로 쓸수 있다고 하더군요
그래서 lisp에 대해 알아보니까 버그도 없고 문법도 없고 뭐든다되는 킹왕짱이라는데
좀 어렵다고도 하고, 그리고 배운다음에 emacs설정말고 다른데 못써먹는거 아닐까
하는 의구심도 들고 그렇습니다..

그리고 erlang이라는 언어가 병렬처리에 좋다고 요새 언급이 많은것 같습니다
이걸 배워볼까 하다가.. 병렬처리는 fork(), exec(), pthread, createthread()
같은걸로도 다 되는거 같던데... 새로 언어를 배워야하나? 이런생각도 들고
그렇습니다

그리고 assembly..
이거 지금 전혀 모르지만 디버깅 하는덴 전혀 문제없습니다
근데 또.. 알아야 할것 같기도 하고..

조언들좀 부탁드릴께요

M.W.Park의 이미지

조금만 더 면밀하게 조사해보세요.
패러다임이 완전 다른 functional language인 lisp도 좋고 erlang도 좋습니다.

글에서 조금 오류를 지적하자면 병렬처리에서 fork, exec 등등은 erlang의 병렬처리에 비하면 아주 느리고 비싸고 저수준입니다.

그리고, emacs는 실존하는 최고의 에디터이므로 꼭 배워야합니다. ㅋㅋㅋ

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

vivisection의 이미지

emacs는 역시 어디가서든 알아주는군요

익명 사용자의 이미지

전 그다지 필요한거 같지 않아 안쓰고 있는데..

혹시 SFTP 기능도 되나요?

vivisection의 이미지

된다고 하던데 제가 안써봐서 확답은 못드리겠네요
http://xahlee.org/emacs/emacs_fun.html

개인적으로 이멕스를 최고로 치는 이유가 저런 외부도구같은
기능들때문이 아니라 문서/소스편집할때 여러 단축키들이
내장되어 있어 하드코어한 편집이 가능해서입니다
그리고 자동들여쓰기..(자동으로 테트리스블록이 제자리에 맞쳐지는기분)

제가 주로 쓰는 기능은 Dired , Shell command, gdb 정도.. 입니다

근데 이게 단점이 있다면.. emacs 아닌곳에선 글자 입력하기가 싫어집니다
이런 웹사이트 입력폼같은데도 글자 입력하기 싫고, Visual Studio 내장에디터
같은걸로도 소스편집하고 싶지 않아집니다
그래서 지금은 mfc 프로젝트라고 해도 emacs에서 다합니다

세벌의 이미지

저는 vi파입니다. emacs파와 vi파는 둘 다 사라지지 않을 듯.

vivisection의 이미지

세벌님도 emacs 좀 써보시면 마음이 달라지실듯..

저도 예전엔 vi 썻었습니다

36311의 이미지

어짜피 한개만 더 배우고 말게 아니므로, 끌리는 대로 하는게 좋겠죠…

* 포럼 주제와 무관한 신변잡기를 반복해서 올리지 맙시다.
* 질문 게시판 만이라도 익명 글쓰기를 막아야 한다고 생각합니다.

snowall의 이미지

굳이 하나만 배워야 한다면, 당연히 영어죠.

피할 수 있을때 즐겨라! http://melotopia.net/b

vivisection의 이미지

영어는 아무리 공부해봤자 안늘어서요

redneval의 이미지

1. 실용적인 측면에서 보자면, 즉 당장 써먹을만한 언어가 필요하다면
How to Become a Hacker라는 글의 '1. Learn how to program.' 부분을 읽어보기를 추천합니다.
(링크 : http://www.catb.org/~esr/faqs/hacker-howto.html#skills1)

간단하게 요약하자면 Python, C/C++, Java, Perl, LISP 다섯 개의 언어를 배울 것을 추천하고 있고
그 중에서도 Python을 먼저 배우고 Java는 나중에 배우라고 하고 있네요.

2. 언어를 배움으로써 새로운 개념을 익히고 싶다면 다음 글을 읽어보기를 추천합니다.
http://lisp.tistory.com/entry/어떤-프로그래밍-언어를-어떻게-공부해야-할까

3. 종합적으로 판단해보면, C/C++은 안다고 하시니
Perl(또는 Python) -> Java -> Haskell -> Lisp 순서로 공부하는 것이 괜찮은 공부순서가 아닌가 싶습니다.

처음부터 Lisp을 배우면 문화적 충격이 너무 클 겁니다. ㅎㅎ

kgcrom의 이미지

1번 링크는 시간내서 읽어봐야겠네요 : )
좋은 링크 소개, 감사합니다.

흘러가고있는 지금 이 시간에 충실하자.

익명 사용자의 이미지

http://www.yes24.com/24/goods/5968810?scode=032&OzSrank=1

land of lisp 의 번역서 추천드립니다.

kalevala의 이미지

Python을 추천드립니다. 다 배워가실 즈음 가속도가 붙어서 다른 언어도 하나둘 집어드실 수

있을겁니다. :) 배우기 쉬운 것으로 우선 가는 겁니다.

sangheon의 이미지

C++ 창시자 Bjarne Stroustrup이 말한 알아야 할 프로그래밍 언어 5 가지
C++, Java, Python, (함수형 언어), (Javascript/Ruby/C/C#)

펄 창시자 Larry Wall이 말한 알아야 할 프로그래밍 언어 5 가지
Javascript, Java, Haskell, C, Perl (그 외로 Python, Ruby)

--

Minimalist Programmer

cleansugar의 이미지

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

sblade의 이미지

을 어느정도 아신다면 투자대비 미래 잠재적 효용성으로는 Java가 일단 좋아보이네요. 언급된 언어들 중 C++와의 갭이 (피상적 수준에서는) 그나마 가장 작은 것 같습니다. 어쨌거나 현재 언어계의 패권자는 Java 이기도 하구요. (이제 다들 늙어가는 왕이라 생각하긴 합니다만 :-) )

스크립팅을 손쉽게 할 수 있는 python/perl/ruby 이런것 중 하나 익혀두시면 나중에 생산성에 큰 도움이 될 것 같습니다.

Lisp 은 symbolic computation 에 빛을 발합니다. Lisp 이 가장 많이 활발하게 사용되었던 곳은 심볼릭 인공지능 연구 분야였는데, 뭐 예를들면 주어진 조건을 만족하는 모든 경우의 수를 찾는다던가 이런 류의 문제를 Lisp 로 쓰면 매우 간결하고 자연스럽습니다. 예를 들면 조건을 주고 항공사 최저 요금 및 경로 찾아주는 소프트웨어 솔루션 중 가장 유명한것 (ITA software 의 솔루션) 이 Lisp 으로 되어 있다고 들었습니다. 그런데 반대로 말하면 이런 류의 어플리케이션이 아니면 그다지 회사에서 선호하는 랭귀지는 아닌 것 같습니다. (첨언으로 emacs 설정이 lisp 으로 되어 있는 이유가, RMS 가 80년대에 MIT AI lab 박사였다는 사실에서 기인합니다.)

요새 떠오르는(?) 패러다임 중 하나는 객체지향과 함수형 언어를 동시에, 거의 동등하게 지원하는 언어들입니다. 요즘 그러한 언어들의 대표주자가 F# 과 Scala 인데 각각 .net 과 JVM 하에서 돌아간다는 장점이 있습니다. 물론 옛날에도 이러한 언어들이 있었지만 얘네는 .net 과 JVM 을 등에 업은게 상당한 메릿인 것 같습니다.

그리고 병렬처리는, 좀 더 크게 말해서 concurrency에 강점을 가지는 언어가 등장한건 단순히 한 컴퓨터 안에서 fork 를 하는 정도의 일을 하기 위한 건 아니고, 궁극적으로는 facebook 이나 twitter 스케일 이상의 일을 하기 위한 겁니다. 예를들면 Erlang 은 에릭슨의 텔레커뮤니케이션 스위치에 사용되고, 몇년 전 twitter 는 back-end 의 일부를 ruby 에서 scala 로 바꿨습니다 (그 후로 twitter 의 downtime 이 현저하게 줄었습니다). 이렇게 안정성이 극도로 중요한 경우 코딩을 low-level primitive 를 사용해서는 짜기도 거의 불가능하고 안정성도 보장할 수 없죠.

나빌레라의 이미지

와우! 댓글 자체만으로도 엄청난 공부가 되는 군요!

----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라

Hamyt88의 이미지

확실히 시스템 규모가 커지면 확실히 밑바닥부터 짜 올리면서 안정성까지 확보하기란 너무 힘든거같아요.

fltoll의 이미지

요즘 GPU 같은 것들이 뜨니까, OpenCL(http://en.wikipedia.org/wiki/OpenCL) 이런 걸 공부해 보는 것도..

익명 사용자의 이미지

만약 학생이라면 나중에 지원하고 싶은 회사에서 요구하는 스킬을 알아보고
거기에 모르는 언어가 있으면 그걸 택하면 되겠네요.

익명 사용자의 이미지

향후 최대 활용도는 Javascript 가 가장 높을 것 같네요.

익명 사용자의 이미지

Perl, Python, Ruby, PHP, C, C++, Lua, tcl, javascript and Java benchmark/comparison.

http://onlyjob.blogspot.com/2011/03/perl5-python-ruby-php-c-c-lua-tcl.html

익명 사용자의 이미지

신뢰할 수 없는 글입니다.
소스코드가 있길래 돌려봤는데 문법오류 ㅋ

익명 사용자의 이미지

어떤 언어가 안돌아가나요?

익명 사용자의 이미지

computer language benchmark

http://shootout.alioth.debian.org/

Hamyt88의 이미지

전 요즘 루비를 배우고 있는데 업무 중간중간에 나오는 잡다한 작업 처리하는데 꽤 쓸만하더라구요.
특히 자바 개발하면서 JRuby를 쓸수 있음으로 인해 생기는 편리함이란..

erlang도 책 사서 잠깐 공부했었는데 영 그쪽으로는 머리가 안굴러가서 지금은 중단한 상태입니다.

kkb의 이미지

좋은 내용의 스레드네요

익명 사용자의 이미지

수학과 관련이 밀접합니다. 보통 컴퓨터 언어는 수학적 관점에서 볼때 '알고리듬의 집합'입니다. 그리고, 수학에서는 튜링머신 외에도 이 알고리듬 집합을 구성하는 방식이 여러가지가 있습니다. 일반적인 프로그래밍 언어에 해당되는 while-programming 도 이에 속하지만, 수학에서 보다 빈번하게 사용하는 방식은 class of recursive functions 입니다. 이 둘은 같은 구조를 갖는 집합(엄밀히 말하면 수학에서 set 으로 표현이 불가능하기때문에 집합은 아니고 proper class 입니다.)이지만, 표현방식은 판이하게 다르고요. imperative language 가 while-programming 방식이라면, 함수형 언어는 recursive function(혹은 computable function) 방식입니다. lisp 같은 언어는 여기에 충실한 언어고요. 함수형 언어중 수학적으로 볼때 보다 흥미있는 언어는 하스켈입니다. 최근(?)들어 수학에서 위세를 크게 떨치는, 그리고 추상적인 category theory 에서 여러부분을 받아왔기때문에 왠만한 high level language 중에서도 독보적인 수준으로 추상화가 되어있고요. 수학에 관심이 있다면 여러모로 배워볼만한 언어임은 맞는것같습니다.

다만, 수학에서 이야기하는 추상화라는게 일반적으로 생각하는 추상화와는 거리가 상당히 있어서 여기에 익숙해지는것도 처음에는 어느정도 노력을 필요로 하고, 수학에 별로 관심없이 순수 코딩 위주로만 접근한다면 일반 imperative 혹은 object-oriented 언어와도 별 차이를 느끼지 못할 가능성이 큽니다. 이렇게 되면 '왜 나는 굳이 함수형 언어로 코딩을 하고 있는가' 와 같은 보다 근본적인 문제에 직면해서 답을 못찾을 가능성이 높다고 봅니다. 활용성에서는 오히려 더 떨어질 가능성이 높고요. 고로, 함수형 언어는 일단 선택지에서 뒤로 돌리시고, 시간이 남으면 수학과 병행해서 공부하는쪽이 장기적으로 좋을듯 합니다. 제가 추천하는 입문서적은 The Haskell Road to logic, maths and programming 입니다.(400 페이지가량 되는 책이지만, 이걸로도 함수형 언어의 배경지식은 메꿔지기 힘듭니다. 애초에 수학과를 들어가도 석사가 넘어가서 해당 분야를 선택해서 들어가야 접해볼 수 있는것들이기에.)

익명 사용자의 이미지

JavaScript에 한표 던집니다.
배우기는 쉽지만 잘하기 무지 힘든 언어라 생각합니다.

JavaScript자체는 Lisp에 영향을 많이 받아 함수형 언어처럼 사용할 수도 있고,
나중에 jQuery 같은걸 분석해보거나, C/C++ 를 이용해서 Node.js의 addon을 만드는식으로 활용할 수도 있고요.

세벌의 이미지

한국어! 프로그래밍 공부하다 모르는 것 있을 때 kldp에 물어보려면 필수.

프로그래밍 언어 이것 저것 배우시다 보면 서로 다른 점도 있지만 공통점도 있다는 것을 발견할 겁니다.

실제 업무에 들어가게 되면 프로그래밍 언어보다는 업무에 대한 이해가 더 중요하다는 걸 알게 될 거고요.

vivisection의 이미지

lisp 랑 perl 중에 고민하다가 perl5로 결정했습니다

조언해주신 많은분들 고맙습니다