선호하시는 프로그램 편집기의 감동스런 기능으로 무엇이 있을까요..

착한아이의 이미지

아마 고수님들은 vi나 emacs를 많이 쓰시는것 같아서 관련글들을 좀 찾아봤는데, 다들 그저 좋다고만 하시지 정작 무슨 기능이 좋은지 구체적으로 언급하는 글은 좀처럼 찾기 힘드네요..
메뉴얼을 읽어봐도 무슨 얘기인지 잘모르겠고, 참 어렵더라구여.. (초보라 이해해주셔요..)
그래서 제 질문은요.. 선호하시는 프로그램 편집기의 감동(!)스런 기능 몇가지만 예를들어 설명해주셨으면 해서요.. (주로 편집에 기여하는 기능이면 좋겠어요..)

괜찮은 편집기능은 제가 만드는 편집기 (http://kldp.org/node/89956) 에도 도입해볼까 싶어서요..

우선 제 편집기 이름을 지어봤어요.. ㅎㅎ
"전세계 1억명의 프로그래밍 입문자들을 위한 초보 교육용 알고리즘 작성기" 쯤 싶어요..
실무 전문가분들을 염두한 편집기는 아니고요.. 제가 좀 초보다 보니 수준급 기능은 별로 없어요..

일단 현재 계획된 기능으로는
1.오타입력 불가
2.vi나 emacs같은 기존편집기의 키입력수보다 1/10수준의 적은 평균 키입력.
3.외워야 할 명령어나 단축키가 거의 없음. (Ctrl+Ins,Shift+Ins 정도..)
4.조금 편리한 주석문 관리
5.자유로운명명,일괄이름변경
6.인터프리터 내장. 함수의 제한적인 실행,디버깅 가능. 데모함수.
7.텍스트기반 모든언어의 함수 작성지원. 초보분들은 특정 언어의 문법을 몰라도 코딩을 할수가 있답니다..


일주일마다 잠깐씩 만들고 있는데요.. 아직 갈길이 머네요.. ㅎㅎ

File attachments: 
첨부파일 크기
Image icon export2.png6.93 KB
snowall의 이미지

오타 검사 정도가 아니라 오타 "입력 불가"를 어떻게 구현하실지가 궁금합니다.

저는 감히 감도 안오는군요...-_-;
--------------------------
snowall의 블로그입니다.
http://snowall.tistory.com

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

착한아이의 이미지

특허라도 등록해야할까요..? ㅎㅎ
근데 위 동영상처럼 모든언어로 저장가능한 편집기같은게 특허가 될수 있을까요..??

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

mykldp의 이미지

호오... 링크하신 글을 읽어봤습니다. 대충 훑어 봤는데 이클립스나 넷빈즈를 사용해서 "제법 큰 프로그램"을 자바로 코딩해보시면 좋을 것 같군요. 굳이 자바를 이야기한 이유는 말씀하신 기능들에 가까운 기능들이 자바에 대해서 가장 잘 개발되어 있기 때문입니다.

프로그래머가 코드를 입력하는 동안 incremental compile 또는 background compile 을 해서 코드 입력과 "거의" 동시에 컴파일 오류를 알려줍니다.
그리고 흔히 "리팩토링" 이라고 알려져있는 기능이 있어서 변수나 함수의 이름을 일괄적으로 바꾼준다든지, 일부 블럭을 함수로 분리시켜준다든지 등등의 일을 해줍니다. 함수의 제한적인 실행 또는 '값 평가'는 디버깅 모드에서 가능합니다. 링크한 글을 읽어보면 함수의 제한적인 실행을 코딩 중에 한다는 뉘앙스인 것 같은데, 실제 프로그램에서 대부분의 값이 런타임에만 결정될 수 있을겁니다. 코딩중에 함수를 실행하고 값을 구한다는 것은 좀 이상한데요? 극히 일부의 경우에만 가능할테고 별로 쓸모없는 경우들일겁니다.

서로 다른 언어 사이에 변환을 해주는 것을 중요하게 생각하시는 것 같은데, 제 생각에는 별로 의미 없는 기능인 것 같습니다. 그런 기능이 왜 필요할까요? 필요성도 의문이고 장난감 코드가 아닌 실제 제품 수준의 코드를 그렇게 변환할 수 있는 변환기를 만드는 것은 실현 가능성도 없어보입니다.

그리고 좋은 에디터 또는 IDE가 되기 위해서는 확장기능(플러그인)을 만들기가 쉬워야 하는데 이에 대한 언급은 없는 것 같군요. 또한가지 중요한 내용이 빠져있는데 코드 "navigation" 입니다. 모듈(컴파일 단위, 파일)이 많아지고 프로그램이 커지면 편리하게 소스 코드를 돌아다닐 수 있는 기능이 매우 중요해집니다.

헉...쓰신 글을 다시 읽어 보니 편집기 이름이 "전세계 1억명의 프로그래밍 입문자들를 위한 초보 교육용 함수 작성기" 이군요. 프로그래밍 교육용 프로그램이라면면... 굳이 프로그래머 입장에서 편리한 기능들이 필요할까요? "편리함" 을 좀 다른 각도에서 바라봐야할 것 같은데요? 음...

착한아이의 이미지

자바에서는 제가 계획하는 기능들이 이미 많이 가동하고 있는것 같네요..

Workspace 기반툴(Matlab,Maple,Mathematica,MathCAD)에서는 현재 라인만 실행해볼수 있어요.. 현재 라인을 실행하기 위해 전체코드를 매번 실행하는게 번거로울때가 좀 있거든요..

이 편집기의 목적은 원하는 언어의 코드를 간편하게 작성하는것이지 다른언어로의 변환이 목적은 아니예요.. 이 편집기는 단순히 해당 단어를 replace를 하는 것이기 때문에, 애초에 사람도 변환할수 없는 코드를 생성할수 없겠지요. 그래서 이 프로그램은 Matlab처럼 주로 장치 비의존적인 선형대수를 사용하는 영상처리, 3D알고리즘을 작성하는데 사용될거예요.. 장치 의존적인 실무용이 아니라 교육용 수준인셈이지요.. (1만명 실무개발자 시장보다는 1억명 교육용 시장규모가 더 크지 않겠어요.. ㅎㅎ) (개발사의 이권이 개입되기도 하지만) 저는 언어마다 각기 고유탄생철학이 있고, 사용목적에 따라 적합한 언어를 사용하는게 더 효과적이라고 생각해요.. 그래서 한번 작성한 알고리즘을 여러언어로 저장할수 있음이 장난감 수준이거나 별로 의미가 없을것 같지는 않다고 생각해요.. 이 편집기는 이권을 타투는 특정언어에 동조하지 않을뿐 아니라, 이 편집기를 사용하면 더 이상 새로운 언어를 배우기 위해 시간을 투자할 필요가 없거든요..

이 편집기의 Navigation은 더 큰 감동을 드리기 위해, 공개전까지 언급하지 않기로 했어요.. ^^;

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

mykldp의 이미지

-인용 {-
"저는 언어마다 각기 고유탄생철학이 있고, 사용 목적에 따라 적합한 언어를 사용하는게 더 효과적이라고 생각해요"
-인용 }-

맞습니다. 그러니까 변환기가 무의미한 겁니다. 컴퓨터가 자동으로 변환해줄만한 차이라면 두 언어의 스타일 (철학, idiom, ...) 사이에 본질적인 차이가 없는 것이지요.

"런타임 환경" 문제 때문에 변환하는 거라면 의미가 있습니다. 예를 들어 Haskell 코드를 컴파일해서 javascript 코드를 만들어주는 컴파일러가 있습니다. javascript 가 대부분의 웹브라우저에서 돌아가니까, 이는 Haskell 로 짠 코드를 웹브라우저에서 실행할 수 있도록 변환한다는 의미가 있습니다. 사실상 모든 컴파일러가 하는 일이 어떤 언어의 코드를 특정 플랫폼("런타임 환경")의 native code (많은 경우에 기계어, 말씀드린 예에서는 javascript) 로 변환하는 일이지요.

하지만 "표현 방식" 문제 때문이라면 기계가 바꿔주는 변환은 정말 아무 의미가 없습니다. 사칙 연산, 대입, 반복 같은 기본적인 연산들과 예약어를 기계적으로 바꿔주는 것은 정말 의미 없는 일입니다. 흔히 "C++ 로 C 프로그램을 짠다", "C 로 basic 프로그램을 짠다" 고 하는 그런 코드가 만들어지는 거지요. 서로 다른 언어는 문법만 다른 게 아니라 문제를 해결하기 위한 스타일(철학, idiom, ...)이 다른 겁니다. 그 스타일 사이의 변환을 자동으로 하는 것은 쉬운 일이 아닙니다. 각 언어의 철학과 idiom 에 맞게 코드를 짜는 일은 꽤나 "창조적인" 능력과 "학습 (훈련)" 이 필요한 일입니다.

언어 사이에 기계적인 변환을 한다는 것은 굳이 다른 언어를 사용할 이유가 없는 상황인 겁니다. 새로운 언어로 코딩한다는 것은 새로운 방식으로 문제를 해결할 필요가 있기 때문입니다. object oriented programming 을 하다가 function programming 을 한다던지, C++ 의 template 를 활용하는 generic programming 또는 meta programming 방식이 맘에 들어서 C++ 을 사용한다던지, prototype 기반 설계와 duck typing, closure 가 맘에 들어서 javascript 를 사용한다던지, 행렬을 사용하는 수치 연산을 많이 해야하는데 대부분의 언어에는 이를 위한 표준적인 라이브러리가 없으니 간편하게 matlab 을 사용한다던지, symbolic mathematics 가 필요해서 mathematica, maple 을 사용한다던지 등등등.

그런데 각 상황에 대응되는 변환 (또는 역변환)을 기계가 해줄 수 있을까요? 예를 들어 java 로 짠 oop style 의 프로그램을 Hasekll 로 functional programming style 에 맞춰서 변환할 수 있을까요? C++ template 을 사용한 코드를 C 로 바꿀 수 있을까요? javascript 코드를 prototype 이나 duck typing, closure 라는 개념이 아예 없는 언어로 바꿀 수 있을까요? matlab 의 행렬 연산을 자바로 바꿀 수 있을까요? (행렬 연산, 알고리즘을 위해 어떤 라이브러리를 사용해야할까요?) mathematica, maple 의 symbolic integration, simplification 을 다른 언어로 어떻게 바꿀수 있을까요?

각 경우에 맞는 컴파일러 back end 를 만들지 않는 이상 불가능한 일입니다. 그리고 그런 컴파일러가 출력해주는 코드는 정말 사람이 이해할 수 없는 코드가 될 수 밖에 없습니다. 앞에서 말씀드린 것처럼 런타임 환경(플랫폼) 문제 때문에 필여하다면 모를까, 그렇지 않다면 아무 의미가 없는 코드가 만들어지는 겁니다. matlab, mathematica 의 경우처럼 라이브러리가 문제되면 그마저로 불가능하지요.

***

열정이 있어보이십니다. 끈기도 있어보이시구요. 이런데 시간 낭비하지 마시고, 좀 더 의미있는 일을 찾아보시면 어떨까요? 시간 낭비라 폄하해서 죄송합니다만 "착한 아이" 님은 지금 이 에디터 만드는데에 들이는 노력으로 좀 더 의미있는 다른 일을 할 수 있을거라고 생각합니다. 영상 처리 쪽이 전문이시라면 관련된 툴이나 라이브러리를 오픈 소스로 개발해보시는 것은 어떨까요? 이 에디터보다 훨씬 의미있는 일일거라고 생각합니다.

착한아이의 이미지

Quote:
"저는 언어마다 각기 고유탄생철학이 있고, 사용 목적에 따라 적합한 언어를 사용하는게 더 효과적이라고 생각해요" - 그래서 변환기가 무의미한 겁니다.

이 말씀은 사용목적에 따라 적합한 언어를 직접 코딩하자는 말씀인것 같은데요.. 코딩하려면 일단 사용하려는 언어의 문법을 알아야겠지요.. 이 편집기는 전세계 1억명의 그런 다른언어의 문법숙지과정을 줄여줄수 있다는 의미이기도해요.. 답글다신 제글을 다시 보시면 이 편집기는 변환자체가 궁극적인 목적은 아니예요.. 언어에 따라 변환이 불완전할수도 있지만, 그건 그 두언어간의 문제이지 이 편집기의 불완전함은 아니랍니다..

제게 시간낭비하지 말라고 말씀하실수 있는 것은 이것이 제작 불가능하다는 전제일때 일텐데요.. 일단 저는 언급하신 불상사가 발생할만한 변환방법을 쓰지는 않고요.. 코드 내용이 어케되었건 중요한건 동일한 실행을 해내는 코드를 만드는 것이라 생각해요.. 요즘 언어들은 초기개발때에 비해 타 언어의 표현을 많이 차용해오고 있는데요.. 적어도 선형대수 문제에 있어서는 주류 언어간 불상사는 많지 않다고 생각해요.. 공들여 개발한 어떤 독립적인 선형대수 알고리즘이 어떤 특정언어에 종속되는것보다는 Language-Free로 남는게 더 가치가 있을것 같았어요.. Lauguage-Free에 대한 제아이디어가 얼마나 하찮은 일이었는지는 좀 더 지나봐야 깨닫게 되겠지요.. 초보의투정, 월척, 절대불가능, 꿈깨라는 등등을 조언해주셨던 분들의 말씀들을 귀담아 듣고 있답니다..

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

나그네나그네의 이미지

딴거는 일단 다 제쳐두고. 자동 들여쓰기랑 syntax highlighting부터 가능해야 할 것 같군요. python에서 자동 들여쓰기가 없으면 -_-;;;;;;

그런데 컴파일 에러나 런타임 에러는 어디서 보여주나요? 예시에선 없네요.
----------------
agidari.wordpress.com

M.W.Park의 이미지

Quote:
1.오타입력 불가

에러 메시지는 보여줄 필요가 없을듯합니다.

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

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

착한아이의 이미지

이론적으로 컴파일 에러는 발생하지 않을것이므로 표시할 필요는 없겠지요..
런타임 에러는 깊이 생각안해봤는데.. 가급적 경고정도로 넘길것 같네요..

위 동영상은 걍 저장하기 데모화면이고요..
Highlighting 과 Indentation은 기본이라 굳이 언급하지는 않았네요..

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

지리즈의 이미지

비슷한 기능이 구현되는 대표적인 것이 비베6인데요,
문법에 어긋나는 경우 syntax highlight로
붉게 표시되는 수준을 넘어 메시지 박스를 띄웁니다.
(그나마 다행은 메시지 박스이지 맞는 문법으로 자동 수정된다면 더 암울하겠지요)

코딩이라는 작업이 편이를 위해 의도적으로 틀린 문법을 작성해서
연달아 복사해서 붙여 넣고 이를 조금씩 편집하는 경우가 있습니다.
이럴 경우 매번 경고 메세지가 뜨기 때문에 매우 불편하죠.
결국 별도의 편집기에서 편집해서 비베에 붙여 넣고는 합니다.

제가 볼 때는 "오타 입력 불가"가 불가능해서
지금까지 구현되지 않은 것은 아니라고 보입니다.
다만 실제로 그것이 편리보다 불편함이 더 크기 때문에 사용되지 않을 뿐이지요.

There is no spoon. Neo from the Matrix 1999.

There is no spoon. Neo from the Matrix 1999.

착한아이의 이미지

그 불편은 메시지박스가 현재 작업을 방해했기 때문이지, 오타를 검사했기 때문은 아닌것 같은데요.. 그리고 이런 불편들도 이미 오타가 입력된 후에 벌어진 일들이겠지요.. 하지만 제 편집기에서는 Run을 방해하는 입력자체가 되질 않아요.. 그리고 유사한 문장의 대량생성이 반드시 오류없는 문장으로도 이루어질 것 같네요..

제가 생각하기엔 일반툴에서는 오타입력자체조차 막기가 힘들었거나, 막으려는 시도가 오히려 불편을 초래했을것 같은 생각이 들어요.. (정말 오타입력불가가 불편한 편집방법인지는 저도 겪어봐야 확신할수 있겠지만) 오타입력이 불가능한 방식이 편집상의 어떤 불편을 야기하지는 않을거라 생각해요..

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

ageldama의 이미지

"내가 쓰려는 내용에 대해서 별로 간섭하지 않는다." 정도네요...

전 두벌식+qwerty로, 키감이 좋은 구식 키보드로 타닥 거리는걸 좋아하거든요...

----
The future is here. It's just not widely distributed yet.
- William Gibson

착한아이의 이미지

굉장히 소박하신것 같네요.. NotePad도 그닥 간섭은 안하는것 같던데.. ^^;

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

totohero의 이미지

이미 단축키를 지원하는 vim이나 emacs 등 기존의 다른 에디터보다 더 짧은 키스트로크가 가능하려면, 사용자가 입력한 키보다 더 많은 수의 문자열을 써넣는 방법이 필요할텐데요. auto-completion이나 abbreviation이나 반복 매크로나 코드의 뼈대(skeleton)를 만들어내는 기능은 vim이나 emacs에도 있는데 더 어떤 방법을 생각하시는지 궁금합니다. 이를테면 혹시 C로 작성한 코드를 Java로 자동으로 변환해준다든지 하는 건가요? 혹시 그런게 된다면, 특정 에디터의 기능으로 결합시키지 않고 emacs나 vim에서도 쓸 수 있도록 standard I/O 인터페이스를 가진 별도의 프로그램으로 만드는 방법이 유닉스의 철학에도 맞고 좋을 듯 합니다.

원래 질문에 답하자면, emacs나 vim의 좋은 점은 (윈도우즈보다 유닉스 계열을 선호하는 이유와도 비슷한데), 특정한 기능이 포함된 버전이 나오기를 기다리거나 특정 기능을 지원하는 대체 어플리케이션을 인터넷에서 뒤지고 여러가지 쉐어웨어를 깔아보는 수고가 적게 들기 때문입니다. C 코드를 예쁘게 정렬해주는 indent라는 프로그램이 있는데 비슷한 기능이 emacs나 vim에 포함되기를 기다릴 필요가 없습니다. 정렬할 영역을 선택하고 C-u M-| indent 혹은 :%!indent라고 하면 되니까요. 간단하지만 한가지 기능만은 확실히 할 줄 아는, 그리고 다른 어플리케이션과 조합해서 사용하는데 문제가 없도록 standard I/O를 지원하는 다양한 툴들의 집합이 유닉스 환경이 가지는 가장 큰 장점의 하나이며 emacs나 vim도 그런 방향에서 크게 벗어나지 않습니다.

emacs나 vim의 미덕은 더 이상 집어넣을 게 없을 정도로 기능이 많아서가 아니라 더 이상 뺄 것이 없을 최소한의 (lisp 혹은 ex) 인터프리터를 제공하고 사용자 커뮤니티를 통해 다양한 기능이 개발될 여지를 준 것이라고 생각합니다.

착한아이의 이미지

Key Stroke을 줄이는 방법은 말씀하신것 이외에도 좀더 있답니다.. ^^ 물론 저장할 언어에 따라 차이가 좀 있겠지만, 언어간 변환에 의한 방법은 아니고요. 제가 사용하려는 Key Stroke 감소방법은 vi나 emacs의 Plugin으로 구현하지 못하거나 구현하기 쉽지 않을듯 해요.. 일단 제가 plugin 구현할 능력이 모자라고요..

말씀하신 장점은 vi,emacs의 편집상의 고유의 장점이라기 보다는 Plugin 방식자체의 장점인듯 싶은데요.. 제가 알고싶어하는 부분은 언급하신 :%!indent 같은 기능이라덩가, Plugin 중에 어떤 감동적인 것이 있는지 였어요..

어떤 편집기능을 Plugin 방식으로 하는것도 좋긴한데요.. 일단 이 편집기는 Plugin 방식으로 해야할 정도로, 계획된 기능보다 더 개선할 여지가 별로 없는데다, Plugin 방식의 포맷을 정하는건 배보다 배꼽이 큰 일뿐 아니라 애초 목표를 벗어나는 수준이라, 이 편집기에서 Plugin 방식을 사용하지는 않을 생각이예요.. 다만 언어표현은 Plugin과 유사한 형태로 설계하고 있기 때문에 일반사용자들이 기본제공되지 않은 새로운 언어표현을 추가하는것은 가능할거예요..

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

totohero의 이미지

착한아이님이 말씀하시는 방법이 어떤 것인지 궁금하네요. 아무튼 plugin을 빼버리고 vi, emacs의 편집상의 고유의 장점을 찾으신다면, 아마 없을 겁니다. emacs에서 elisp로 작성된 모듈을 모두 빼시면 화살표키 이동도 못하고 파일 열기조차도 안됩니다^^. 유용한 plugin은 몇가지 말씀드릴 수 있죠. vc라는 일관된 인터페이스로 cvs, svn, clearcase 등의 SCM이 연동되는 점이 좋습니다. 각 리비젼 비교도 예쁘게 되고요.

에디터는 복잡 다양한 케이스들을 커버하는 하나의 모델입니다. 그리고 모델의 정확도와 복잡도는 비례하게 됩니다. 더 간단하면서도 더 정확한 (더 많은 케이스에 적용되는) 에디터를 만들 수는 없습니다. plugin은 아니지만 언어표현을 추가할 수 있도록 하겠다고 하셨는데, 그렇다면 기존 plugin보다는 간단한 방식으로 언어표현을 추가할 수 있는 방법을 생각하시는거죠? turing-complete한 elisp보다 복잡도가 낮은 class에 속하는 표현 방식이라면 (regular expression등) elisp으로 파싱이 가능한 context-free language를 파싱할 수 없게 됩니다. 즉 emacs로 할 수 있는 것도 이젠 할 수 없게 됩니다. 그렇게 제한된 기능을 가진 상태에서 더 개선의 여지가 없는 에디터라면 어필하기 힘들지 않을까요?

착한아이의 이미지

저야 취미로하는건데, 처음부터 너무 목표대상을 광범위하게 잡기엔 제가 시간도, 능력도 많이 부족하고요.. 전 그저 저같은 초보자들이 가독성 좋고, 사용하기 쉽고(외울게별로없음), 빠르고(적은 KeyStroke), 정확하게(오타불가) 코딩하는 편집기면 만족해요.. 고작 숙제정도 코딩하는데, 편집기 숙지가 더 어려우면 안되겠지요.. 이 편집기가 1만명의 실무 전문 프로그래머들에게 어필하긴 어렵겠지만, 전세계 1억명의 초보 프로그래밍 입문자들이 하나같이 Plugin이 안된다고 vi나 emacs만 더 선호할것 같진 않거든요.. 전 단지 이 Thread를 통해 어떤 감동적인 편집기능들이 있었는지를 알고 싶었을 뿐이랍니다..

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

imyejin의 이미지

이미지로 보아서는 명령형 언어만 고려하고 있지 함수형 언어(Lisp, ML, Haskell)나 논리 언어(Prolog)에 대해서는 전혀 고려하지 않고 있는 것 같습니다. 기계어나 어셈블러 같은 언어야 컴파일러가 있으면 어차피 뿌려낼 수 있을테니까, "모든 언어"라고 하면 아마도 "모든 고급 프로그래밍 언어"를 말씀하시는 것 같은데 난해한 프로그래밍 언어(esoteric programming language, esolang)들까지 포함하는 것은 그렇더라도 최소한 함수 중심 언어와 논리 언어는 포함시켜 놓아야 할 것 같군요.

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

착한아이의 이미지

아직 많이 고려하고 있지는 않는데요..
haskell은 안써봐서 모르겠지만, CLISP 정도는 가능하지 싶어요..

일단 난해한 언어는 배제할것이므로, 일단 "모든 텍스트기반 언어"라고 표현한건 "대부분의 텍스트기반언어.." 정정해야겠네요.. ^^;

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

zecca371의 이미지

일단 아이디어도 괜찮고, 동영상을 봐도 꽤 재미가 있는데요... 기존의 다른 편집기나 개발환경과 이 프로그램에 대해 비교해서 단점을 찾거나, 구현이 가능하다 불가능하다의 관점보다는 개인이 이러한 아이디어와 시도를 한다는데 격려를 보내고 싶습니다... 앞으로 어떻게 더 진행될지 궁금하고, 좋은 결과가 있었으면 합니다... ^^*

------------------------------------------------

구형컴퓨터는 쓸모없는 것이 아닙니다...
쓰임새를 찾지 못하고 있을뿐입니다...


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

구형컴퓨터는 쓸모없는 것이 아닙니다...
쓰임새를 찾지 못하고 있을뿐입니다...

서지훈의 이미지

음...
전 현재 windows(VS), *nix에서 vim/gvim 사용 비중이 99.9%인데요.
일단 이게 너무 편해서 ㅡㅡ;
프로그램 작업시 ctags + cscope + TList로 엮으면 프로그램에 필요한 거진 모든 기능이 다 되는것 같습니다.
그리고, 자동 완성(Ctrl+p)이것도 좋구, cscope 단축키도 편하고, abbrevition 기능도 편하고, 정말 아무 불편 없이 사용 하고 있습니다.
그리고, command ':%!xxd' 또는 ':r!date'류의 외부 프로그램과의 훌륭한 연결도 또한 아주 매력적입니다.
그리고, *nix 머신 어디에 가도 깔려 있는 vi 때문에 별다른 불편없이 가능한 작업...
vi 사용하다 다른 편집기 사용하면 남발하는 [esc]와 hjkl 때문에 적응 하기 힘든것도 이놈을 자주 이용하는 이유이기도 하고요.
여하튼... 에디터로서의 필요한 기능은 다 되니 다른 편집기로 넘어갈 이유는 찾기가 힘드네요.

추신_아무 생각 없이 리플을 달았지만... 왜 이글이 대문에 떴을가요 ㅎㅎ;

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

댓글 첨부 파일: 
첨부파일 크기
Image icon vim.png40.44 KB
Image icon gvim.png21.23 KB

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

착한아이의 이미지

소개해주신 말씀가운데, 제가 알아들은 기능은 [1]자동완성, [2]습관적으로 [esc], 방향키를 hjkl을 쓰게된다이고요..
제가 잘 몰라서 그러는데, [3]약어기능(abbreviation)이 무엇을 하는것인지 간략히 소개 듣고 싶고요.
cscope의 [4]단축키중 편한 기능이 무엇인지, [5]외부프로그램과 훌륭한 연결에 해당하는 조금 구체적인 사례를 들어주시면 좋겠고요..

vi에서 동작하는 [6]프로그램에 필요한 거진 모든 기능중에, 타 편집기에서 잘 안되고 있는 기능들도 생각나면 소개 부탁드려요.. ^^

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

creativeidler의 이미지

이클립스를 유용한 단축키를 몇 가지 예를 들면...

1. Ctrl + 1 quick fix
2. Alt + 화살표 줄 이동, 위치 이동
3. Ctrl + Shift + R 리소스 찾기
4. Ctrl + / 주석
5. Ctrl + F11 마지막 실행 다시 실행하기

이 정도인 듯. 4,5번은 다른 에디터에도 있지만 다른 에디터보다 좀더 편하고 3번은 textmate가 좀더 편하지만 이클립스에서 먼저 등장한 것. Ctrl+space나 F3 같은 건 IDE의 기본이라 열거할 필요 없을 듯.

copy & paste할 때 인덴트 자동으로 맞춰주는 것도 문맥에 맞춰서 정확하게 맞춰 줘서 다른 에디터보다 좋음.

개인적으로 착한아이님이 개발하시는 것이 방향성을 잘못 잡았다고 생각하긴 하지만 멋진 시도라는 점은 의심할 여지가 없는 듯.

M.W.Park의 이미지

eclipse 이야기가 나온김에 저의 견해를 좀 추가하자면,
제생각에는 eclipse 내장 에디터의 근본적 강점은 기본(Windows) 모드와 emacs 모드를 제공하면서, 거의 대부분의 기능에 대한 키 정의를 사용자가 마음대로 다시 할 수있는 유연성인 듯합니다.

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

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

착한아이의 이미지

말씀하신 저의 잘못 잡은 방향성이나, 제가 어떤 방향성으로 가는게 나은 것이었었는지 조금 구체적으로 지적해주시면 귀담아 들을께요..

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

cppig1995의 이미지

성공하기만 한다면 멋진 시도지요. 왜 부정하겠습니까?
특정 프로그래밍 언어에 귀속된 소스 코드를 편집하는 편집기에서 한 단계 상위개념 즉, 알고리즘을 본다는 의미로 HigherEdit이라는 이름을 슬쩍 제안해 봅니다. 계층적(hierarchical)과 첫 몇 음절 발음이 똑같이 들리는 건 보너스입니다. (저 언어유희 좋아합니다.)

그리고, 다음을 고려해 보세요.

malloc과 realloc을 이용해서 가변 크기 배열을 관리하는 함수 라이브러리를 사용하는 C 프로그램을 C++으로 변환했을 때 std::vector를 사용하는 프로그램으로 변환할 수 있는가? 그리고, for문을 이용해 배열을 순회하는 반복문을 자동으로 std::for_each로 변환할 수 있는가?
--
임수서룬뫼 윤희수 {cppig1995/돼지군}

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

착한아이의 이미지

성공해야만 멋진시도인건가요..? 이 말씀에는 왠지 만들어내지 못할것이라는 전제(premise)가 느껴지는데요.. ^^; 시도보다는 기능을 평가해 주셨으면 싶어요.. ^^ 어쨌든 멋진 이름 제안해 주셔서 감사하고요.. Platform-Free를 강조하는 언어들이 많은데, 전 그 상위개념으로 Language-Free를 강조하고 싶었어요..

제 편집기는 한가지 아무 언어만 편집하기로 되어있고, 타언어로의 변환이 목적은 아니지만, 사람이 변환할수있는 코드까지는 생성할수 있다고 믿고 있어요.. 제가 C/C++을 잘 몰라서 그러는데, 서로 다른언어에서 동등한 코드의 예를 보여주시면, 궁금해 하시는 동작을 동영상으로 만들어 보도록 해볼께요..

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

imyejin의 이미지

착한아이님의 에디터는 전혀 랭귀지 프리하지 않습니다.

오히려 착한아이님의 에디터가 강제하는 단 하나의 랭귀지에 종속되어 있을 뿐이죠.

착한아이님의 에디터가 다룰 수 있는 범위는 착한아이님이 경험해 본 일부 랭귀지의

임의적인 교집합일 뿐이므로 사람들이 흥미를 느끼지 못하는 것이라고 봅니다.

특정 언어를 사용하는 것은 그 언어의 장점을 최대한 끌어내고자 하는 것이지

다른 언어와 공통적인 부분만 골라 쓰기 위함이 아닙니다.

임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

착한아이의 이미지

제 편집기가 편집을 구속하는 바가 있긴하지만, 제 관점에서는 그것이 특정한 언어에만 종속되어 있다고 보기는 어려워요. 제 편집기는 의미를 작성하는 것이지, 변환을 목적으로 문법적 표현을 작성하는것은 아니거든요. 본문에 표기한 제 편집기 제목에서 보시듯이 ".. 알고리즘 작성기" 랍니다.

물론 제 편집기는 사람이 만들어 낼수 있는 언어의 (교집합)코드까지만 제대로 생성해요..
예를들어, C언어에 있는 printf가 R언어에 없다고 가정할때, C언어로 작성할때는 printf를 생성할수 있지만, R언어로 작성할때는 printf를 생성할수 없겠지요.. 하지만 제 편집기에는 C언어 때문에 printf 라는 의미는 엄연히 존재한답니다. 즉 제 편집기는 합집합을 가지고 있지만, 언어에 따라 생성하지 못하는 코드가 발생할수는 있겠지요.. R언어에 printf라는 의미가 없다는데 어쩔수 있나요.. (여기서 printf는 예를 들기 위한 가정일뿐이고, 실제 R언어에는 printf가 있을거예요.. )

이 예에서 처럼, 말씀하시고자하는 랭귀지프리가 사람도 만들어 낼수 없는 (Non-교집합)의미까지 생성해내는(C언어 생성시가 아닌, R언어 생성시, R언어에 없는 printf에 해당하는 의미를 생성해내야하는)것을 포함하시는 거라면 제 편집기가 랭귀지 프리는 아니겠지요..

말씀하시고자하는 랭귀지프리의 정의를 좀더 묘사해주시면, 그 개념의 존재여부에 따라 "랭귀지프리"라는 표현은 삼가하도록 고려해 볼께요..

ps. 제가 좀 잘 몰라서 그러는데요.. A언어에서는 a,b 의미가 있고, B언어에서는 b,c 의미가 있을때, A 언어에서의 a,b 표현, B 언어에서의 b,c 표현에 대한 간단한 코드예를 보여주시면, 제 편집기에서 A 언어 작성시, a,b를 생성하고, B언어 작성시 b,c를 생성하는지 준비해 볼께요.. 그런 Non-교집합 a,c 의미에 대한 코드예를 목격해보기 전까지는, 그런 Non-교집합 의미가 생각보다 그리 많지 않을거라는 생각이 들것 같아요..

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

semmal의 이미지

편집기를 통해서 사람들이 하고 싶은 작업은 단순히 Hello World같은 간단한 프로그램을 작성하는 것이 아닙니다. XML을 파싱하고, GUI를 만들고, 스레드를 만들고, 프로세스를 만들며, 소켓 통신을 합니다. 사람들이 편집기에서 원하는 것은 긴시간 동안 지루한 코딩을 할 때 그 코딩을 줄여주는 도구이지, 내가 쓰지도 않을 다른 언어로 코드를 변환해주는 것을 원하지는 않습니다. 설령, 언어적인 문법이 설령 교환 가능하다고 해도, 언어마다 존재하는 수많은 라이브러리와 그 라이브러리를 쓰기 위한 독특한 방법을 어떻게 표현하실 겁니까?

착한아이님의 실력을 키우는데 이러한 노력을 하는 것이 분명 나쁘지는 않습니다. 하지만 방향을 더 정확하고 제대로 잡는다면 그 효과는 더 커질 것 같군요. 그 노력을 인정하기때문에 착한아이님을 응원하는 입장이지만, 뚝심으로 밀고나갈 일이 있고, 돌아가가나 잠깐 서서 생각해 볼 일도 있는 법입니다.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

착한아이의 이미지

말씀하신대로 코딩할때의 실수를 방지하고, 코딩시간을 줄이는 것이예요.. 제가 코딩 초보라 실수를 너무 많이해서..
교집합간의 변환은 정말 어쩔수없이 불가피하게 발생하는 현상일 뿐이고요. 변환이 목적은 아니므로, 그냥 자기가 사용하고자하는 언어를 코딩하시면 되요..

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

semmal의 이미지

착한 아이님이 만드신 에디터로 xhtml을 파싱해서, 그 트리구조를 보여주는 GUI를 작성해서 보여주실 수 있을까요? 이정도면 어플리케이션을 만들어야하는 초보자에게 교육용으로는 나름 쉽고 나름 쓸모있는 케이스가 될 듯하군요. 이 일을 해보시면서 에디터의 기능을 써서 만든 라인수가 몇 퍼센트나 되는지 스스로 테스트 해보시기 바랍니다. 그리고 실수가 얼마나 줄어드는지도요. 실수가 줄어드는 것을 완벽히 판별하지는 못하겠지만, 그래도 나름 자동화 도구이니 에디터의 기능때문에 실수가 생기는지 정도만 확인하셔도 될 것 같습니다.

위의 작업을 해보신 이후에, 어떤 식으로 작업했고, 어떤 결과가 나왔는지 알려주신다면, 그 과정이나 결과가 다른 분들이 vi나 emacs로 작업했을 때보다 효율적일 수 있는 지 쉽게 말씀해주시리라 생각합니다.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

착한아이의 이미지

근데 아직 미완성인데다 장치관련(GUI) 교집합을 다 준비해두지 못했을 것이므로, 어느정도 동작하면 특정언어에서 컴파일되는 과정 정도만 동영상으로 준비해 볼께요.. 현재 Key Stroke (Shift,Ctrl,Alt,Tab,ESC 포함)수 측정에 의하면 대략 소스용량의 20% 정도로 측정중이고요.. 물론 문법적 오타는 없을거고요.. Shift,Ctrl,Alt,Tab,ESC를 제외한 키입력은 좀 더 줄듯 싶어요..

근데 xhtml 포맷은 어려운가요..? 어려우면 편집기가 문제가 아니라, 제가 무식해서 문제가 될듯 싶은데요.. ㅡ,.ㅡa
원래는 "3차원 공간에서 점과 선이 만드는 면" 이런 예제를 생각하고 있었거든요..

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

착한아이의 이미지

1.오타입력 불가
2.vi나 emacs같은 기존편집기의 키입력수보다 1/10수준의 적은 평균 키입력.
3.외워야 할 명령어나 단축키가 거의 없음. (Ctrl+Ins,Shift+Ins 정도..)
4.조금 편리한 주석문 관리

정도에 대한 데모를 준비해봤어요.. 2달전쯤까지 만들어진건데 요즘 바빠서 손을 놓고 있네요..

아래 동영상은 전체화면으로 보시면 조금 잘 보일거고요.. 제가 동영상 녹화하는 법을 잘 몰라서 좀 잘 안보이더라도 이해해주세요.. (용량이 좀 큰편인데, 트래픽초과되면 안보일지도 모르겠어요..)

왼쪽 목차에 입력중인 KeyStroke를 보였고요.. 일단 오타는 입력은 불가능하다고 가정할수 있을듯 싶고요.. 별 생각없이 추정했던 키입력 수는, 대략 1/5 이상 정도로 측정되는듯 해요.. 키입력수는 좀더 줄일수 있는데 이 데모에서는 아직 미완성중이네요.. vi나 emacs 보다 키입력이 더 적었길 빌어요.. ^^

왼쪽 상단코드는 임의의 사용자 정의 언어도 작성할수 있음을 보이기 위해 이상한 문자를 넣어본거고요.. (스페이드는 변수, 전화기는 함수(콜~~), 대입문은 삼각형, 하얀기호는 타입을 나타내는 빈공간쯤?) 사용자 정의 언어에는 기존언어에 잘 없는 do-while-do랑 (a << A << b) 같은 3항 조건식 표현도 넣어봤어요.. 기호뿐 아니라 원하는 문법까지 맘대로 창조하시면 되기 때문에 pseudo 코드나 맨아래 한글문장처럼 활용하셔도 되겠지요..

1분 23초쯤 보시면 do while문장을 deactive 하는 모습을 볼수 있어요.. 문장단위로도 deactivate 할수 있기 때문에, deactivate하려는 문장의 끝이 어딘지 찾아갈 필요는 없고요..
깜빡 하고 문장단위 잘라내기하는 데모를 포함안시켰는데.. 복사,삭제시에도 문장의 끝이 어딘지 찾아갈 필요가 없겠지요..? ^^

아래 그림도 클릭하시면 잘 보일거고요..

위 그림은 각 문장에 위치한 안내글을 언제든 삽입했다가 제거했다가 할수 있음을 보이고 있고요.. 물론 Deactivate 시킨 문장도 코드에 보였다 안보였다 할수 있을거예요.. deactivate된 문장이나 안내문들이 종종 코드를 읽는데 어수선하게 하기도 해서요.. vi나 emacs도 이런 주석문 관리가 되는지는 모르겠네요..

작업한 시간은 얼마 안되는데 세월은 벌써 1년이 되어가네요.. 내년엔 좀 끝내고 싶은데.. ㅠ,.ㅠ 이 데모는 아직 걸음마 수준이고요, 정말 감동(?)적인 기능은 완성때 보이도록 할께요.. ^^

제가 논지를 올릴 때는 논지에 관련된 의견을 듣고자 함이지, 논지의 여부를 논쟁하기 위함이 아니예요.
논지의 취지를 이해하지 못한 의견에는 가급적 답글 달지 않겠어요. :P

M.W.Park의 이미지

돌아오지 못할 정도로 멀리 가시는 건 아닌지 모르겠네요.
타겟으로 하는 다른 편집기를 잘 모르신다고 항상 이야기하시는데...
겸손이라면 모르겠지만, 실제로 그렇다면 상당히 걱정스럽군요.
또한 공개하실 의향이 없다면, 여기서 변죽만 울리는 것도 별로 보기 좋지 않습니다.

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

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