가장 마음을 구부리는 프로그래밍 언어? [닫은]


45

A로부터 합리적으로 당신이 가장 압도적으로 찾을 수 있습니까 일반적인 프로그래밍 언어?

나는 많은 프로그래밍 팟 캐스트를 듣고 다가오는 중요한 새로운 언어를 배우는데 시간이 걸렸다. 필자는 반드시 BrainFuck 에 대해 이야기하고있는 것은 아니지만 일반적인 프로그래밍 패러다임에 도전하는 언어는 무엇입니까?

저에게는 1990 년대에 몇 가지 기능 및 논리 (예 : Prolog ) 프로그래밍을했기 때문에 특별한 것을 찾을 수 없습니다.

나는 지금까지 그 분야의 전문가 인에서,하지만 오늘도 나에게 가장 압도적 인 프로그래밍 언어 인 . 때문이 아니 "안녕하세요"는 구현하기 어려운, 오히려 가장 어려운 솔루션의 일부는 이렇게 시적으로 내 머리를 취소 멀리 내 터미널에서 밖으로 걸어해야한다는 분해 될 수 있도록 많은 어휘 유연성이있다. 상업용 소프트웨어 구현을 판매 할 가능성이 없다고 말하는 것은 아닙니다. Perl이 그렇게 유명한 이유가 있다는 것입니다. 책의 기본 목록을 살펴보십시오.

그래서, 당신의 마음 절곡 언어는 더 나은 프로그램과 관행을 촉진하는 무엇인가 ?


마음을 구부릴 수없고 그냥 두어도 될까요?

4
공백이 중요한 모든 언어!
mootinator

@mootinator-그러나 파이썬은 텍스트 편집기가 고통을 유발하지 않는 한 실제로 작업하는 것이 재미 있습니다.
rjzii

1
@Thorbjorn 누군가 INTERCAL을 추가 할 예정입니까? APL은 그 큰 아빠에 비해 중학교 프로젝트입니다.
Mark C

펄은 가장 어려운 곳은 없습니다. 저는 12 살이고 펄을 쉽게 프로그래밍 할 수 있습니다.
동적

답변:


73

APL

이 언어는 매우 강력하고 매우 간결한, 그것은 것입니다 당신의 두뇌를 다치게.

초보자에게는 사용자 정의 키보드없이 사용하거나 까다로운 기호를 표시하기 위해 최소한 키보드 오버레이를 사용하는 것이 까다 롭습니다.

APL 키보드

그런 다음 언어는 벡터 / 배열 기반 패러다임의 언어이며 복잡한 선형 대수학을 전문으로합니다. 원래 버전에는 루프 구성, 심지어 특이한 배열 연산자를 연결하여 수행되는 모든 작업이 없었습니다.

  • strip_tags()아무도? (위키 백과에서 차용)

strip_tags () ala APL


18
키보드 표시 +1
tcrosley

5
@tcrosley : 만약 당신이 진짜 하나 있다면 좋네요 : wickensonline.co.uk/apl/unicomp-apl-top-large.jpg
Orbling

4
그리고 충분히 마음이 구부러지지 않으면 백 스페이스 / 오버 스트라이크 키를 사용해야하는 일부 연산자가있었습니다. 예를 들어, 역행렬은 분할 기호 (키보드 이미지의 오른쪽 상단 모서리에있는 백 화살표 키 옆에있는 기호)가 겹쳐진 사각형 상자 (L 키 위)입니다.
Tangurena

2
높은 수준의 통계 회귀 분석을 수행하기 위해 APL을 수행했을 때 1980 년대 초로 역화를 겪고 있지만 사람들은 여전히 ​​그것을 사용하고 있습니까? 전율.
HLGEM

2
나는 많은 APL을 한 번했다 – 그것은 여전히 ​​나를 위해 향수의 장소를 가지고있다. .. 나는 당시에 그것을 좋아했다.
quick_now

56

하스켈 . 그것은 대부분의 사람들에게 익숙하지 않은 순수한 기능에 가깝습니다. 매우 까다로워서, 당신이 무엇을하고 있는지 알지만 그때까지 좌절을 느끼면 도움이됩니다. 다소 비밀스럽고 상징적 인 구문을 가지고 있습니다. 알고 나면 그 전에 불투명합니다 ... 목록은 계속됩니다.

또한 나에게 잘 맞는 방식으로 형식을 지정하는 것은 불가능합니다.


7
나는 Haskell에게도 말했지만, 그것이 비밀 스럽기 때문에 아닙니다. 확실히 이해하기 어려울 수 있지만, 마음을 구부리는 것은 배후의 이론에 관한 것입니다. Monad와 Arrows는 여전히 내가 정복하지 않은 영역입니다 :)
Matthieu M.

11
왜 "순전히 기능하는 것"에 가깝습니까? 순전히 기능적입니다.
dan_waterworth

4
Haskell이 어떻게 당신의 마음을 구부릴 것인지에 대해 다음과 같이 덧붙이고 싶습니다 : "Haskell은 카펫 아래에 물건을 넣지 못하게하고, 프로그램의 구조를 명시 적으로 다루도록 강요하며, 이러한 구조를 설명하는 언어를 가르쳐줍니다 : 유형의 언어. 유형, 특히 Haskell과 같이 풍부한 유형을 이해하면 모든 언어에서 더 나은 프로그래머가 될 것입니다. " programmers.stackexchange.com/questions/28950/…
Waquo

14
Haskell은 순전히 기능적인 프로그래밍 언어입니다. Haskell에서 작성하는 코드는 unsafePerformIO 등을 사용하지 않는 한 순수하게 작동합니다. IO-Monad는 순전히 기능적입니다. 그렇지 않으면 모나드를 사용하여 순전히 기능적인 방식으로 제어 흐름을 모델링하는 방법을 이해할 수 없습니다. 쇼핑 목록은 순수한 데이터 구조이고 부작용이 없으며 언어 런타임은 부작용을 수행하는 구매자 인 프로그램으로 IO 활동의 쇼핑 목록으로 프로그램을 생각하십시오.
Waquo

8
@Jon, 어쨌든 우리는 동의합니다. 언어 인 Haskell은 순전히 기능적이지만 런타임 시스템은 아닙니다. 하스켈 프로그램의 실행은 불확실하지만 프로그램 자체는 순수합니다.
dan_waterworth

30

프롤로그. 처음 노출되었을 때 사용한 다른 언어와는 너무 달랐습니다. 나는 그것을 좋아하므로 구문이나 다른 것을 싫어하지 않습니다.


2
나는 Prolog에 리버스 프로그래밍으로 접근하여 이미 내 대답을 알고 프로그램을 통해 질문을 얻었습니다.)
Jé Queue

1
@ Xepoch : 나는 당신이 바로 거기에있을 것이라고 생각합니다 .Prolog가 질문을 공식화하고 있습니다. 사용중인 유일한 5GL 언어 중 하나입니다.
Orbling

일반적으로 나는 Prolog가 매우 흥미롭고 강력하다고 생각하지만 컷 배치 ( !) 주위로 머리를 완전히 돌리는 데 큰 어려움이 있습니다.
Orbling

Prolog의 경우 +1, Prolog를 사용한 인공 지능 과정이 있는데 이는 내가
잘못한

프롤로그는 기능적인 프로그래밍 언어는 아닙니다. Prolog에 의해 기능화되는 것은 Lisp의 절차 적 프로그래밍에 영향을받는 것과 같습니다.
저의 정확한 의견 그냥

24

펄에 동의합니다. 내가 본 것 중 가장 추악한 구문입니다. 그들은 심지어 Perl 개발자들조차도 그들이 쓴 글을 기억하지 못한다고 말합니다.


2
펄의 방어력 +1 나는 항상 '암시적인'변수를 좋아했습니다. 훌륭한 쓰기 전용 코드를 만듭니다.
GrandmasterB

2
누구나 Perl을 다르게 작성하여 다른 언어를 작성하고있을 수도 있습니다. Perl이 다른 사람의 코드를 가져 오기 위해 어떻게 작동하는지 배울 필요가 없으며, 특정 사람이 어떻게 그것을 사용 했는지도 배워야합니다.
glenatron

3
이 답변과 그것에 대한 두 의견에 Bah. 잘 작성된 펄은 읽고 쓰기 쉽습니다. 초보자가 쓴 아기 펄은 장황하지만 간단합니다. "읽을 수없는"유일한 perl은 의도적으로 난독 화되거나 한 줄짜리 스크립트입니다.
Sean McMillan

22

나는 Forth 라고 말해야 할 것이다 . 모든 작업이 스택 조작이라는 표기법. 순수한 형태에는 사용할 로컬 변수가 없습니다.


10
FORTH는 훌륭한 언어입니다. 80 년대 초에 프로그래밍을 처음 배웠을 때 Atari 400을 사용했고 선택은 BASIC, Assembly 및 FORTH로 해석되었습니다. 나는 세 가지 모두를 광범위하게 사용했지만 다른 것보다 더 많이 사용했습니다. 나는 여전히 레오 브로디의 초고속 스타팅 포스와 씽킹 포스 책을 가지고 있습니다. 실제로 새 하드웨어 시스템에서 자체 호스팅 언어를 처음부터 작성하라는 요청을 받으면 망설이지 않고 FORTH를 선택합니다.
Adam Crossland

3
@Adam Crossland : Thinking FORTH는 훌륭한 책
이므로이

1
@Orbling : 좋은 생각은 비슷하게 생각합니다. 10 분 전만해도, 나는 Kindle에 PDF를 넣었습니다.
Adam Crossland

1
@Adam Crossland : 좋은 곳입니다. 이 책은 일반적으로 프로그래머에게 도움이되고, FORTH에 관심이 있거나없는 사람들을위한 읽기 목록에 있어야합니다.
Orbling

1
전적으로 동의합니다. 우리가 일반적으로 문제를 해결하는 것에 대해 어떻게 생각하는지에 대해서는 말할 것이 많습니다. Brodie는 그처럼 명쾌한 사상가이자 분명한 작가입니다. 그의 작품은 나에게 기쁨입니다.
Adam Crossland

21

루비 .

이것은 나를 죽이고 싶어합니다.

1.month.from.now()

(정확한 구문이 잘못되었을 수 있지만 요점을 알 수 있습니다).


23
세상에 누가 이것이 좋은 생각이라고 생각한 적이 있습니까?
EpsilonVector

8
마음을 굽히는 것은 독서에 관한 것이 아니라 글에 관한 것입니다. 이 넌센스를 생각해내는 것은 어렵고 모든 내장 함수 / 속성을 암기 / 조회하는 것은 우스운 일입니다.
Matthew 읽기

55
이것이 멋져 보인다고 생각하는 것은 나뿐입니까? 루비를 배우는 좋은 이유일까요?
Orbling

9
읽는 것이 굉장합니다. 그러나 이것은 내가 마지막 달에 3 개월을 쓸 수 있다는 것을 의미합니까? 아뇨, 아니면 적어도 그렇게 생각 하지 않습니다 . 내가 할 수 있다면 ... RoR은 최초의 텔레파시 언어가 될 수 있습니다.
morganpdx

15
무엇이 잘못 되었나요 DateTime.Now.AddMonths(1);? 이러한 기능 은 코드를 더 읽기 쉽게 만들지 않습니다. (C #에 최고의 구문이 있다고 말하는 것은 아닙니다. 다른 언어 규칙으로 바꿀 수 있으며 여전히 적용됩니다.)
ChaosPandion

18

Brainfuck

이 조롱의 언어를 정직하게 쓸 수있는 사람이라면 누구나 이와 같은 실을 필요로하지 않아도됩니다.

Hello World (포인터, 왼쪽, 설명, 오른쪽) :

+++++ +++++             initialize counter (cell #0) to 10
[                       use loop to set the next four cells to 70/100/30/10
    > +++++ ++              add  7 to cell #1
    > +++++ +++++           add 10 to cell #2 
    > +++                   add  3 to cell #3
    > +                     add  1 to cell #4
    <<<< -                  decrement counter (cell #0)
]                   
> ++ .                  print 'H'
> + .                   print 'e'
+++++ ++ .              print 'l'
.                       print 'l'
+++ .                   print 'o'
> ++ .                  print ' '
<< +++++ +++++ +++++ .  print 'W'
> .                     print 'o'
+++ .                   print 'r'
----- - .               print 'l'
----- --- .             print 'd'
> + .                   print '!'
> .                     print '\n'

2
아니면 공백은 어떻습니까? Brainfuck의 모든 악은 보이지 않는 코드와 결합되었습니다.
Loren Pechtel

17

Lisp는 나의 최신 정신 구부리는 언어입니다.

Haskell에서 모나드와 함수형 프로그래밍을 가져 왔으며 이제는 매크로를 가지고 작업 할 수 있습니다. 방금 CLOS에 들어가서 컨디션 시스템을 전혀 만지지 않았습니다.


나는 Lisps를 좋아하지 않으며 (Clojure를 제외하고는-나는 여전히 내 마음을 구성하지 않았습니다) +1을주었습니다. 마음을 굽히는 부분은 확실히 거기에 있으며 내가 그것을 사용하지 않더라도 Lisp에서 배운 내용은 다른 언어로하는 일에 대해 많은 정보를 얻었습니다.
저의 정확한 의견 그냥

14

유행성 이하선염

이것은에서 팝업 언어입니다 시간시간 온라인 이야기와 (이다, 환자 기록) 중요한 생활 안전 정보를 저장 실제 생산에 사용되는 추가 명예를 가지고있다. 그러나 이것은 간결함이 인정되는 언어이며 다음과 같은 기능이 프로덕션 코드에 나타날 수 있습니다 ( 주제에 대한 Wikipedia 기사의 예 ).

s A="String" F i=1:1:$L(A) W $c($S($A($E(A,i))<91:$A($E(A,i))-52#26+65,1:$A($E(A,i))-84#26+97))

와우, 너 농담 아니니? 나는 잠들지 않았고 갑자기 4 월 1 일입니까? 많은 괄호와 달러 기호는 환자 기록 근처에 있으면 안됩니다.
dan_waterworth

1
내 첫 프로그래밍 작업은 MUMPS 전문 회사와 함께했습니다! 슬프게도 저는 웹 개발에 관한 대학 과정을 밟아서 저를 대신하여 회사의 새로운 형태의 ASP 팀에 데려 갔지만 MUMPS는 처음 몇 주 동안 우리가 훈련 한 언어였습니다. 아마 운이 좋은 탈출구가 있었을 수도 있습니다.
thesunneversets

1
매디슨 위스콘신에서 게시 한 사람이 있습니까? 베로나, 정말?
Hans Passant

1
나는 dailywtf.com에 MUMPS 전용 섹션이 있다고 생각합니다. 만지고 싶은 언어처럼 보이지 않습니다.
Tyanna

1
나는 학계에서 M을 배우고 그것을 특수 목적 언어로 흥미 로웠다고 생각합니다. 그것이 허용하는 간결함은 왜곡 된 종류의 축소와 같습니다. 순진하게도, 프로덕션 코드에는 언어의 최단 축약어가 거의 없을 것이라고 생각했습니다. 내가 처음으로 생산 M 코드베이스를 보았을 때 내 직감이 강화되었습니다 ... 예와 똑 같았습니다. 오, 공포!
ajk

13

Coq 또는 종속 유형 이론의 다른 구현 이라고 말하고 싶습니다 . 하스켈 타입 시스템은 비교적 표현력이 좋지 않습니다. 좀 더 표현적인 유형의 시스템 (예 : CoC (Colculus of Constructions ))으로 이동하면 언어 에서 프로그램의 속성을 증명 하고 정적으로 확인할 수있는 유형에 강한 불변성을 포함시키는 등의 깔끔한 작업을 수행 할 수 있습니다.


2
Dependent Type 시스템 / 프로 버 / 언어는 아마도 일반 언어보다 더 혼동 될 수 있으므로 +1입니다.
Orbling

1
프로그램의 공식 검증은 제가 막 시작한 것입니다. 그것은 확실히 마음을 구부리고 현실 세계에서 점점 유용 해지고 있습니다. +1
dan_waterworth

7

오브젝티브 C . 공정하게 말해서, 나는 그것을 아주 짧게 연구했고 언뜻보기에는 구문을 싫어했습니다.

그것은 (상대적으로) 일반적인 언어 (주로 Mac / iPhone / iPad 개발)이기 때문에 익숙해지면 실제로 다소 괜찮습니다.


2
글쎄, 아마 약간의 마음을 구부릴 자격이 있지만, 나는 그것을 좋아합니다. 그것은 당신 이 함수 포인터를 찾는 [foo bar]구문 설탕 이라는 것을 깨닫는 데 도움이 될 수 있습니다 objc_sendMsg(foo, "bar");(일반적인 것이 아니라 특별한 "바"입니다). 완전히 오리 유형이라는 것을 알고 계셨습니까?
Per Johansson

Objective-C는 런타임 함수와 관련하여 막대한 구문 설탕입니다. 익숙해지면 [receiver doStuff:arg]다이나믹 자바처럼 보인다
toasted_flakes

6

나는 수성을 선택한다 .

수은은 순수한 언어조차도 I / O를 할 수 있다는 것을 보여줌으로써 마음을 구부 렸습니다 .

이것이 작동하는 방식은 Mercury의 I / O 기능이 '세계의 상태'값을 가져 와서 새로운 '세계의 상태'값을 반환한다는 것입니다. 따라서 Mercury의 I / O 기능은 세상을 변화 시키므로 순도가 유지됩니다.


3
+1 "... 수은이 세상을 변화 시키므로 순도가 유지됩니다." -문맥이 맞지 않습니다. ;-)
Orbling

나는 지금 머큐리와의 학습 곡선을 통해 고심하고 있습니다. 지금까지는 합당한 투쟁이었습니다. 나는 그것을 많이 좋아.
단지 나의 올바른 의견

수은을 없애는 유일한 방법은 문자열 유형이 NULL로 종료된다는 것입니다.
dan_waterworth

6

반드시 Scheme 이어야 합니다 . 설명하려고하면 call-with-current-continuation항상 내 뇌가 아프지 만 일단 이해하면 믿을 수 없을만큼 우아한 솔루션을 만들 수 있습니다.

알고리즘과 다른 사람에게 핸드 컨트롤을 통해 부분적으로 중지하고 싶습니까? 확실한!

동일한 연속을 여러 번 다시 시작하고 싶습니까? 물론이야!

알고리즘 실행을 일시 중지하고 함수를 재정의 한 다음 원래 스택을 사용하여 업데이트하지만 전역 상태로 실행을 다시 시작 하시겠습니까? 문제 없어요! 그리고 여러 번 전역 상태를 변경했지만 동일한 스택 재진입 지점으로 여러 번 수행합니까? 당신을 위해, 선생님, 무엇이든!


+1 LOL + "당신을 위해, 무엇이든!" Oliver!의 노래에서 거의 한 줄을 쓰는 것 외에도 언어에 대한 열망이기도합니다.
Orbling

1
체계가 명시 적으로 연속되는 유일한 언어는 아닙니다. 예를 들어, Haskell 은 그것을 훌륭하고 마음을 굽히는 방식으로 지원합니다.
단지 나의 올바른 의견

4
Haskell에서는 언어 기능이 아닌 라이브러리로 호출되기 때문에 하스켈에서 마음이 편한 것 같습니다. 그러나 어쩌면 그것은 마음이 편하지 않습니다.
Logan Capaldo

나는 그것이 점점 더 마음을 굽히는 것이라고 생각합니다. 내 머리 속에 그 모순을 유지하면 내 마음이 구부러집니다. 결국 Haskell은 더 마음을 굽 힙니다. :)
나의 올바른 의견

계획 (약 시원한 것은 루비 !)의 연속 요청은 이다 가되는 내장 언어로. Haskell은 기본적으로 일반적인 연속 전달 스타일을 중심으로 모나 딕 구문을 추가합니다. Scheme에서도 가능합니다. 그러나 모든 것을 모나 딕 구조에 포함시키지 않고 어디에서나 전화 / cc를 내장 하면 많은 구부러진 구조가 가능합니다.
Dario

4

나는 모든 종류의 매크로 기능을 가진 매우 강력한 텍스트 수정 언어 인 TECO (Text Editor and COmparator)라는 고대 편집기를 사용했습니다. 나는 그것에 대한 정확한 유명한 인용문을 기억하지는 않지만 요점은 "20 자 임의의 임의의 모음은 거의 항상 합법적 인 TECO 프로그램이며, 근본적으로 예측할 수없는 방식으로 파일 (편집자)을 바꿀 것입니다. TECO 코드 페이지에 대한 Fortran to PL1 변환기.


5
"TECO와 함께 즐길 수있는 가장 재미있는 게임 중 하나는 이름을 명령 줄에 입력하고 그 기능을 추측하는 것입니다. TECO와 대화하는 동안 발생할 수있는 타이핑 오류는 아마도 프로그램을 파괴하거나 더 악화 될 것입니다. 한 번 작동하는 서브 루틴에 미묘하고 신비한 버그를 도입했습니다. " 남자, 그 시절이었다!
단지 나의 올바른 의견

1
TECO는 EMACS의 원래 기반이기도했습니다. EMACS는 TECO 매크로 모음으로 시작되었습니다!
Gabe

@ 오메가 : 당신이 말하는 TECO를 말할 필요가 있습니다. TOPS-10과 함께 제공되는 DEC TECO 또는 MIDAS로 작성된 MIT TECO. 후자의 TECO는 EMACS가 작성된 것입니다. 또한 EMACS가 확장 된 방식이기도합니다. 수업을 통과하는 대신 EMACS를 해킹했습니다.
John Saunders

DEC TECO 만 사용했습니다. 그리고 그렇습니다 그 날 (다시 젊었을 때) ..
Omega Centauri

1
Vim 명령 모드에서 입력하는 것을 기억합니다
ron

3

조립 은 나에게 가장 "마음 구부리기"였지만, 나는 그것을 시작하고있다.


최악의 상황은 OS 및 하드웨어에 따라 다릅니다.
Dave

어때요? 명시적인 그룹화 순서가없는 간단한 지침? 다른 것?
Jé Queue

글쎄, 특히, 나는 프로그램 흐름이 불분명하다는 것을 싫어한다는 것을 싫어한다. 빨리 읽는 것은 쉽지 않습니다.
Anto

2
아, 신시내티 Milacron 2200B : JMP 주소 의 런타임 수정과 결합 된 가변 단어 길이 . 그것은 LSD를 길들인 것처럼 보이게했다.
피터 로웰

3

리스프 . 그것을 배우는 것은 일련의 작은 주현절이며, 각각은 프로그래밍 문제 해결에 대한 생각 방식을 완전히 바꿉니다.


3

리볼

Lisp 와 같이 데이터 코드라는 개념을 중심으로 구축되었습니다 . 이 언어의 지지자들은 그 가족의 다른 접근 방식에 비해 고유 한 이점이 무엇인지 설명하기가 힘들며, 일반적으로 "AmigaOS를 디자인 한 사람은 표준 라이브러리가 포함되어 있고, 현미경, 그리고 일단 당신이 그것을 얻는다면 그것은 빨간 매트릭스 약을 복용하는 것과 같을 것이고 당신은 결코 돌아가고 싶지 않을 것입니다. "

그것의 문제는 부분적으로 기발하고 어떤 프로그래머가 시장에 있는지 정확하게 정의하지 않았다는 것입니다. 그러나 또한 부분적으로 그것을지지하는 많은 사람들이 단지 설명에 짜증이납니다 . :)

그러나 Douglas Crockford는 예전에는 팬이었고 JSON을 만들면서 영감을 얻었으며 사람들이 최근 2010 년 10 월에 팬을 조사 할 것을 제안했습니다.

"Ted Neward는 'Future of Programming Languages'에서 패널을 조정하는 작업을 정말 훌륭하게 수행했습니다. 패널 끝에서 Ted는 새로운 아이디어를 얻기 위해 사람들이 어떤 언어를 배워야하는지 패널 멤버들에게 물었습니다.이 목록에는 Io가 포함되었습니다. (Bruce Tate), Rebol (Douglas Crockford) , Forth and Factor (Alex Payne), Scheme and Assembler (Josh Bloch) 및 Clojure (Guy Steele). "

출처 : sauria.com

언어 디자인과 확장성에 대한 생각을 늘리려는 사람이라면 누구나 볼 가치가 있다고 생각합니다. 이제는 오픈 소스 (18 년의 독점 개발 후) 로 팔을 길게 유지하기 위해 사용했던 일반적인 면책 조항이 더 이상 적용되지 않습니다 ... 볼만한 가치가 있습니다! 커뮤니티는 독점적 인 Rebol 기반 메시징 프로그램에서 벗어나 스택 오버플로에서 채팅하기 시작했습니다 (놀랍습니다!).


1
REBOL의 실질적인 구현은 표준화되지 않은 비공개 소프트웨어이므로 소유 회사의 변덕에 따라 변경되기 때문에 REBOL은 피합니다. (Rebol 2 vs. Rebol 3 ...) 만약 그것이 표준화되거나 열리면 나는 다른 시각을 갖지만 그날까지 Rebol은 내 툴 벨트에서 벗어납니다.
저의 정확한 의견 그냥

1
@JUSTMYcorrectOPINION 어쩌면 하루가 다시 한번 왔습니다! Rebol 3은 이제 Apache2 라이센스 소프트웨어 입니다. 우리는 심지어있어 RebolBot 여기에 REBOL와 레드 채팅방 언어를 demo'ing 우리를 도와에 StackOverflow에 있습니다. ( 레드 는 또 다른 오픈 소스 Rebol 변형으로 하이브리드 컴파일 버전으로 매우 흥미로운 가능성을 보여줍니다.)
HostileFork

2

필자는 많은 사람들이 직접 작성하지 않아도되는 길이에서 개발자들이 SQL 이 마음을 굽히는 것을 발견한다고 말합니다 . 많은 사람들이 자연스럽게 세트의 관점에서 생각하지 않는다고 생각합니다.


SQL은 확실히 마음을 굽히지 만 더 나은 코드를 작성하는 데 도움이되지 않습니다.
dan_waterworth

4
SQL은 BASIC만큼이나 자연 스럽습니다. SQL로 전체 데이터 처리를 파악할 때 DB 지원 응용 프로그램이 얼마나 쉬운 지 놀랍습니다.
Jé Queue

@dan_waterworth, SQL을 사용하면 더 많은 논리를 SQL에 추가하여 대부분의 조건 및 후속 쿼리를 앱에서 다시 처리함으로써 더 작고 간결한 코드를 작성할 수 있습니다.
Jé Queue

@Xepoch, ORM의 부상으로 우리에게 가르쳐 준 것이 있다면 사람들은 SQL을 피할 수 있다면 SQL로 작성하는 것을 좋아하지 않는다고 생각합니다. 그들은 오히려 자신의 언어로 작성하고 싶습니다.
dan_waterworth

당신이 할 수있는 것보다 더 나은 코드를 작성할 수있는 것을 사용하는 것이 좋습니다.
JeffO

2

순수한

Pure는 용어 재 작성을 기반으로하는 기능적 언어입니다. 나는 그것이 약간 과소 평가된다면, 그것은 드문 표현입니다.


+1 기능은 매우 강력한 언어 인 벡터를 의미합니다. q의 자손으로서 (APL에 약간의 빚을지고) Haskell et al. 그것은 분명히 언급을 보증합니다.
Orbling

2

그것은 가장 마음을 굽히지 않을 수도 있지만, 배우기가 가장 어려웠습니다 ( 하스켈어셈블리 언어 가 더 쉽다고 생각했습니다 !)

그것은 HDL 언어들, 특히 VHDL (그리고 Verilog 는 덜) 의 집합입니다.

모든 "기능"이 동시에 실행된다는 사실을 극복하는 것은 매우 어렵고 절대적으로 모든 것을 병렬화하는 전환을 피할 수는 없습니다. 물론 이것은 프로그래밍 언어의 경계선 일뿐입니다.


나는 한 번 VHDL을 조금했다. 코드를 추가함에 따라 점점 더 많은 하드웨어가 해당 코드를 구현하는 것으로 보이며 모두 동시에 실행되고 있음을 갑자기 깨달았습니다. 동시에 무제한 실행 스레드를 갖는 다중 스레드 프로그래밍과 같습니다. EC2 또는 맵 축소 클러스터에서 무제한 노드에 액세스 할 수있는 사람들도 비슷한 반응을 보일 수 있습니다. (그러나 얼마 지나지 않아 나는이 언어들에서 사소한 것을 구현하고 도망가는 것이 얼마나 고통 스럽습니까?)
timday

1
전기 엔지니어이기 때문에 동시성에 큰 문제는 없었지만 실제로는 해방이었습니다. 구현의 어려움과 관련하여 uP는 문제를 특정 수학 클래스에서 틈새 솔루션으로, 문제를 원래 수학에서 가져온 개념 인 알고리즘으로 설명 할 수있는 솔루션으로 변환합니다. 고유 병렬 처리의 문제는 쉽게 해결할 수있는 문제 중 하나이며 VHDL과 FPGA는 그 때 유용합니다.

네, 아직 프로그래머가 아니며 여러 개의 동시 블록으로 작업하는 데 익숙하다면 VHDL은 기이합니다.
medivh

1

Tcl

나는 그것을 한 번 배우기 시작했지만, 이해하기에 충분히 배웠을 때 뇌가 느끼는 방식을 정말로 싫어했습니다. 그것은 마음을 구부리는 것으로 보일 것입니다.


1
1995-1997 년경에 특별한 이유없이 많은 Tcl 프로그래밍을했습니다. 1998 년에 새로운 일자리를 찾기 시작했을 때 베이 지역 전체의 모든 채용 담당자는 저임금의 고압 VIGNETTE 공연에 대한 인터뷰를 요청했습니다. 나는 이력서에서 그것을 빨리 제거했다. 나는 Tcl이 정말 쉽다는 것을 기억하면서 이것에 대해 힘든 시간을주는 것을 고려했지만, 파이썬을 회상 적으로 대신 배우기를 바랍니다.
Adam Crossland

Tcl은 확실히 입맛입니다. 개인적으로 저는 언어의 디자인이 천재적이라고 생각합니다. 다른 언어는 Tcl뿐만 아니라 제 두뇌에도 맞지 않습니다. 그러나 나는 소수에 있습니다. 언어를 좋아하거나 싫어하기 때문에 언어가 어떻게 작동해야하는지 다시 생각해야합니다.
Bryan Oakley

1

튜링 머신 언어입니다. 그것은 매우 강력하고 아마도 존재하는 다른 모든 프로그래밍 언어보다 우월하며 사용하려고하면 뇌를 다치게 할 것입니다.


6
나는 그것이 아마도 우월하다고 주장하는 것에 반대해야한다. 상사라는 용어는 주관적인 문제를 고려할 것을 제안합니다. 또한 무한 메모리가있는 컴퓨터에서 C를 실행하면 (Turing 머신이 무한 메모리로 실행되기 때문에 공평합니다) 전원은 동일합니다.
Winston Ewert

2
@Winston : 튜링 머신의 테이프가 무한 할 필요는 없습니다. 필요에 따라 추가 테이프를 제조 할 수있는 테이프 공장이 양쪽 끝에 만 있으면됩니다.)
Mike Dunlavey

"아마도 우수하다"는 정의상 객관적인 용어입니다. 이는 Turing 머신에서 모든 언어를 구현할 수 있지만 모든 언어가 Turing 머신을 구현할 수있는 것은 아닙니다. 물론, 무한 메모리와 무한 스택을 제공하는 C와 같은 언어에서도 마찬가지입니다.
user12667

이 질문에서 이미 언급했듯이 BrainFuck은 Turing의 기계 언어와 거의 같습니다.
Mchl

1
이것은 튜링 머신이 더 강력하다는 것을 보여줍니다. 문제는 적어도이 용어를 사용할 때 언어가 우수하다고 주장하면 사용의 용이성, 가용성 등을 고려한다는 것입니다.
Winston Ewert

1

포인터, 메모리 관리 및 타입 캐스팅은 모두 많은 생각을하고 잘못되기 쉽습니다. 해시 테이블 또는 목록과 같은 기본 제공 데이터 구조가 없기 때문에 자체 라이브러리를 찾거나 타사 라이브러리를 찾아 API를 학습해야합니다.


실례합니다. C는 어셈블리 언어입니다. 물론 그런 것들이 없습니다.
피터 로웰

2
어셈블리 언어는 마음을 굽히고 있습니다.
david4dev

-1

JESS (Java Expert System Shell). Java 환경에 내장 된 CLIPS의 이러한 적응은 기능적인 규칙 기반 전문가 시스템 언어입니다. 실제 Java 객체를 사실 로 매핑 하고 예상 결과를 얻기 위해 올바른 질문을 찾는 것은 매우 어려운 일입니다. 전문가 시스템 이론에 익숙하다면 순수 OOP 사고 방식에서 나올 때는 적합하지 않습니다. 참고 : CLIPS는 Lisp가 아니라 모양입니다. 또 다른 마인드 벤더.

초기 학습 곡선을 지나면 대답을 도출하는 것이 매우 강력하고 대담합니다.


Jess는 최신 버전의 CLIPS이며, 자체 응용 프로그램을위한 일종의 스크립팅 / 논리 엔진으로도 포함 할 수 있습니다.
Tangurena

알았어. haskel.com/corp/details/0,10294,CLI1_DIV139_ETI9759,00.html는 그럼에도 불구하고,이에 포함 된 언어와 매우 다른 사고 방식이 필요합니다.
Berin Loritsch


-1

CIL

모든 .NET 프로그램이 컴파일 하는 공용 중급 언어 인 CIL 은 일종의 객체 지향 어셈블리입니다. 코드를 쓰거나 읽으려고 시도하고 그 구조를 이미 알고있는 C #의 구조와 비교하는 것이 흥미 롭습니다. .NET이 배후에서 무엇을하는지 더 잘 배울 수있는 좋은 방법입니다. 또한 동적 코드 생성 또는 Mono Cecil을 사용하여 기존 컴파일 된 코드를 다시 작성하는 데 유용 할 수 있습니다 .


2
또는 그 문제에 대한 바이트 코드?
Jé Queue

Java 바이트 코드를 의미한다면, 그 경험에 전혀 경험이 없으므로 마음을 굽히는 것으로 추천 할 위치에 있지 않습니다.
svick

Java-Bytecode가 이미 컴파일되어 있고 런타임에 CIL이 컴파일되므로 Java-Bytecode와 CIL을 실제로 비교하지는 않습니다 (Just-In-Time-Compiler of .net)
basti

@chiffre 대부분의 환경에서 Java Bytecode와 CIL은 정확히 동일하게 작동합니다. 두 경우 모두“컴파일 타임”(CIL 또는 Java 바이트 코드)에서 이진 중개 언어로 컴파일 된 소스 코드 (C # 또는 Java)가 있으며, 그런 다음 JIT에 의해“런타임”에서 실제 머신 코드로 컴파일됩니다. 컴파일러.
svick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.