누가 이공계에 특화된 프로그래밍 언어 하나 만들어 줬음 좋겠어요.

parkon의 이미지

예전에도 비슷한 글들을 올린 적이 있는데요,
예 : http://kldp.org/node/111241 (C/C++은 함수 호출 시 call by reference로 할 수 없었을 까요 ?)
http://kldp.org/node/129972 (C++에서 const keyword가 너무 남용된다고 생각지 않으세요 ?)

C++은 어느 정도 잘 쓰기 위해선 너무 많이 배워야 하는 것 같아요.

프로그래밍 자체를 전문으로 하시는 분들께는 문제가 안되겠지만
어떤 주어진 문제를 풀기 위해 잠깐 배워 사용하기에는 배우기 너무 어렵죠.

그렇다고 지난 수십년간 이공계의 대표적 언어였던 포트란은 좀 너무 낡았구요.

자바는 제가 배워 본 적이 없지만 막연히 (위의 맥락에서) 기대를 좀 하고 있었는데
복소수가 기본으로 지원되지 않는다는 걸 알고는 맘 접었습니다.

물론 매트랩도 있고, 파이썬도 있고 뭐 많이 있겠지만,
수치 계산에 특화된, 포트란을 대체할 수 있는,
그리고 처음 배우는 데 드는 진입 장벽이 낮은
그런 언어가 하나쯤 있었으면 해요.

저는 뭐 그래도 포트란/C/C++/매쓰매티카 등등 조금 아는 컴터 언어들이 몇개 있어서
큰 문제는 없지만 (그렇다고 제가 잘한단 말은 아닙니다)
프로그래밍 경험 하나 없는 저희 랩 신참들에게 수치해석 좀 시키려고 하면
일단 프로그래밍 언어 교육부터 시켜야 하는데
어떤 언어를 추천해야 할지 난감하더라고요.
이게 사실 이 글을 올리는 가장 큰 이유이고요.

현재는 조금 프로그래밍 센스가 있어 보이는 친구들에겐 C++/자바를,
그렇지 않은 친구들에겐 포트란을 권하고 있긴 한데
그러다 보니 한 랩 안에서 여러 컴터 언어가 혼재하게 되어 불편한 점도 많이 생기고요.

snowall의 이미지

그나마 Mathematica, Maple, Matlab같은 것들이 쓸만하지 않나요?

수치해석이라면 어차피 뭘 하더라도 기존에 만든 소스를 봐야 할 거고, 그럼 결국 C/C++과 Fortran을 배울수밖에 없을 거예요.

랩 신입이라고 하더라도 그들이 어차피 본격적으로 연구를 하려면 업계에서 많이 쓰는걸 쓰게 되겠죠.

아니면 요즘 각광받는 파이썬을 시켜보세요.

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

parkon의 이미지

사실 제 주력 언어가 매쓰매카이긴 해요.
근데 이것도 문제가 많은게,
간단한 문제들을 한두줄의 명령어로 처리하는데는 정말 탁월하지만
컨트롤 문법들이 난해하고 정착되지 못해서
조금 큰 문제 풀려면 엄청 어려워 져요.
한 버젼에서 잘 돌아가던게 그 다음 버젼에선 안되고,
또 그다음 버젼에선 또 돌아가는 등의 문제도 많구요.
OOP가 전혀 없다는 것도 문제고요.

나머지 말씀들은 동의합니다.
단지 포트란이나 C++이 보다 나은 수치해석용 언어로 점차 대체되어야 하긴 할텐데
그게 언제냐가 문제겠죠.

laerad84의 이미지

저희 분야에서는 ROOT라고 C++라이브러리를 쓰고 있는데 어떨까요?
http://root.cern.ch/drupal/
일단 C++가 바탕이고 설정에따라서는 python으로도 프로그래밍 가능합니다.

parkon의 이미지

저희 랩에서도 최근 들어서서 root 많이 써요.

마침 root에서 돌아가는 어떤 데이타 베이스 만드는 일을 저희 랩 신참에게 시켜야 하는데
이 친구가 root도 모르고 C 등 프로그래밍 언어도 전혀 모르는 상태인지라,

일단 파이썬 배워서 파이썬 코드를 먼저 짠 후 나중에 root에 집어 넣도록 시킬 건지
아님 이 참에 C++도 배우고 root도 배워 통상의 root 라이브러리 만드라고 할 건지
고민 고민 하다
결국 후자를 선택했는데
과연 일이 어떻게 진행될지 기대 반 걱정 반입니다...

isson16127의 이미지

요즘 시간날때마다 haskell 을 공부해보는데요.. 계산로직을 정말 쉽게 표현할 수 있네요. 거기다가 속도도 빠릅니다. 아직, 그렇게 잘 쓰는 편은 아니라서 적극적으로 추천드릴수는 없지만, 꼭 한번검토해 보시기 바랍니다.

parkon의 이미지

지금 Haskell 홈피 가서 슬쩍 훑어 봤는데 좀 파격적인(?) 언어인듯 싶군요.
시간 날 때 한번 자세히 읽어봐야 겠습니다.
코멘트 감사합니다.

kkb110의 이미지

수치해석에선... 프로토타이핑으로는 matlab/python+numpy, 최대 최적화가 필요할땐 c++/fortran이 많이 쓰이는 정석 조합 같습니다. 다른언어들은 기능/성능을 떠나서 추천할 수가 없습니다. 코드가 남들이 짠거 읽거나 같다쓰고, 아니면 배포 해야 될 일이 빈번해서 가능한 많이 쓰는걸로 하는게 무난한 듯 하네요.

parkon의 이미지

예, 지금 현재는 말씀하신 대로지요.
(그래서 저도 별 수 없이 랜 신입들에게 포트란/C++을 권하고 있구요.)

만약 누군가 맘에 드는 수치해석에 강한 언어 하나 만들고
사람들이 그 언어를 지금의 포트란이나 C++처럼 많이 쓰게 된다면 좋을텐데
하는 정도의 막연한 생각을 적어 봤습니다.

parkon의 이미지

헉 오타입니다. 랜 신입 -> 랩 신입.

lithium81의 이미지

저도 이공계 쪽이고 순혈의 컴공, 소프트웨어쪽은 아닙니다.
워낙 MATLAB이나 Mathematica 같은 상용 프로그램이 무겁기도 하고 워낙 비싸서,
개인적으로나마 Python + NumPy, SciPy + Matplotlib 조합으로 대체하려고 했는데
꽤 만족스럽습니다.
다만, SIMULINK나 랩뷰와 같은 전문적인 시뮬레이션은 Python 조합으로 어렵네요.

- 어제보다 나은 오늘, 오늘보다 나은 내일.

kwchun의 이미지

학생이시라면 매스매티카 1년 라이선스를 $69.95에 구매할 수 있습니다. 그렇게 비싸지 않죠? ^^
기호 계산이 아니라면 굳이 매스매티카를 쓸 이유가 없긴 합니다.

Gethoper의 이미지

파이썬 추천합니다.
Python + numpy + matplotlib이면 충분하실듯 ^^

parkon의 이미지

많은 분들이 파이썬을 추천하시는 군요,
파이썬은 아주 오래 전 한 이삼일 배워보다 그만 두었는데
언제 기회되면 다시한번 배워봐야 겠네요.

원래 글타래 취지(?)하고는 좀 멀어지는 감이 있지만, 이왕이면,
파이썬 완전 초보가 한 며칠 배워서 쓰기에 좋은
간략한(!!) 입문서나 웹 사이트 같은 걸 소개해 주시면 감사하겠습니다.
아, 뭐 다른 어플쪽으론 (현재로선) 거의 관심없고요, 수치계산쪽 측면에서요.

kkb110의 이미지

matplotlib는 필요할때마다 여기 example중에 찾아서 소스코드 보면 될거같구요. http://matplotlib.sourceforge.net/gallery.html
numpy는 공식 튜토리얼로 이런게 있네요. http://www.scipy.org/Tentative_NumPy_Tutorial

parkon의 이미지

감사합니다... ^^

마잇의 이미지

http://www.r-bloggers.com/julia-i-love-you/

We want a language that’s open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that’s homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell. Something that is dirt simple to learn, yet keeps the most serious hackers happy. We want it interactive and we want it compiled.

(Did we mention it should be as fast as C?)

http://julialang.org/

설명을 보아하니 이공계에 특화된 언어가 맞는 것 같습니다.

Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. The library, mostly written in Julia itself, also integrates mature, best-of-breed C and Fortran libraries for linear algebra, random number generation, FFTs, and string processing. More libraries continue to be added over time. Julia programs are organized around defining functions, and overloading them for different combinations of argument types (which can also be user-defined). For a more in-depth discussion of the rationale and advantages of Julia over other systems, see the following highlights or read the introduction in the online manual.


--
마잇

parkon의 이미지

역시 세상은 넓고 언어는 많군요... ^^
http://julialang.org/manual/
요기에 있는 내용 잠깐 훑어보니 Julia라는게 매트랩에 가까운 언어인듯 싶습니다.
댓글 감사드립니다.