리치 코드 형식이 더 일반적이지 않은 이유는 무엇입니까?


29

저는 Code Complete를 읽고 레이아웃과 스타일에 관한 장에서 코드 편집기가 일종의 서식있는 텍스트 형식을 사용할 것이라고 예측했습니다. 이는 다음과 같은 코드 대신에

Procedure ResolveCollisions
{ Performs a posteriori collision resolution through spatial partitioning algoritm }
(
  CurrentMap : SpriteContext,
  PotentialColliders: SpriteList
)
var Collider  : Sprite, 
    Collidee  : Sprite, 
    Collision : SpriteCollision
begin
  DoStuff();
end.

다음과 같이 보일 수 있습니다.

순서 ResolveCollisions

공간 분할 알고리즘을 통해 후부 충돌 해결을 수행합니다.

매개 변수

  • CurrentMap : SpriteContext
  • PotentialColliders : SpriteList

지역 변수

  • Collider : Sprite
  • Collidee : Sprite
  • Collision : SpriteCollision
    DoStuff();

구문 색상 표시 및 강조 표시 및 괄호 색상 표시를 보았지만 실제 코드에서는 이와 같이 보이지 않았습니다. 나는 이런 종류의 것이 실제로 존재했는지, 아니면 그것이 충분한 이익을 얻지 못했거나 완전히 나쁜 생각이라고 결정했는지 궁금합니다.

이전에 이와 같이 풍부한 형식의 코드를 보았거나 아이디어가 고려되어 결국 거부되었는지 알고 있습니까?


8
크 누스의 거미줄을 보았습니까? www-cs-staff.stanford.edu/~uno/cweb.html
greyfade



12
이제 Word를 IDE 편집기로 사용 하시겠습니까?

5
제거하기 란 불가능한 이상한 서식을 사용할 때 Word와 싸운 적이 없습니다. 예제에서는 편집기가 실제 소스 코드의 일부를 숨기고 있다고 가정합니다. 시청자로서 편집자로서 제 생각에는 좋을 것입니다. 내 가난한 영혼에 자비를 베푸소서!
Newtopian

답변:


38

당신이 할 수 없었던 기술적 이유는 없습니다. 텍스트 편집기가 구문 강조를 수행 할 수 있으면 코드를 강조 표시하기 위해 디스플레이의 다른 측면을 쉽게 변경할 수 있습니다.

그러나 편집기에서 입력하는 내용을 파악할 때 색상을 변경하는 것이 무엇보다 중요합니다. 입력하는 동안 텍스트의 크기가 갑자기 바뀌고 뛰어 다니는 것은 정말 불쾌합니다.

그러나 '정적'코드 표시의 경우 소스 코드를 쉽게 아름답게 만들 수 있습니다. 예를 들어 중간 정도의 소스-> HTML 변환기를 가져 와서 원하는 글꼴 크기와 스타일을 스타일 시트에 추가하면 서식있는 코드가 풍부합니다.


14

간단한 이유 : 에디터 / 툴 독립성.

"풍부한"코드를 작성하면 사용한 편집기 또는 서식있는 코드를 이해할 수있는 편집기에 연결됩니다. 풍부함을 처리 할 수없는 다른 모든 편집자는 횡설수설을합니다.

같은 맥락에서 리치 코드는 diff 도구와 잘 어울리지 않습니다. 예를 들어, 일부 서식을 변경 한 경우 차이에 차이가 표시되지만 가장 중요하지 않은 차이도 아닙니다.

버전 관리는 어떻습니까? 서식의 모든 변경 사항을 무시하고 "실제"변경이있을 때만 파일을 수정 된 것으로 보는 방법은 무엇입니까?

마지막으로, 풍부한 코드의 요점은 가독성이라고 생각합니다. 더 나은 의견, 논리적 식별자 이름 및 일관된 들여 쓰기만으로 충분하다고 생각합니다.

본질적으로 프로그래밍 텍스트는 일반 텍스트로 가장 잘 처리됩니다. 현재보고있는 것은 실제 내용입니다. ( 또한 암시 적보다 명시 적 낫다는 Pythonic 아이디어와 일치합니다 )


28
반드시 그런 것은 아닙니다. 편집자가 구문 강조를 수행 할 수 있다면 구문 "bolding"또는 구문 "font-sizing"등을 수행 할 수 있습니다.
whatsisname

4
Emacs가이를 수행하도록 구성 할 수 있지만 글꼴 크기를 변경하는 IMO는 화면 공간을 낭비합니다.
케빈 클라인

4
작성자가 수동으로 서식을 지정해야한다면 시간 낭비 일 것입니다. 분명히 텍스트 편집기가 자동으로 수행하거나 스타일 시트를 사용할 수 있습니다.
피터 올슨

7
@greegit : 편집자는 소스 파일에 색상 정보를 남기지 않고 다른 형식 표시를 남기지 않아도되고 필요에 따라 재생성 할 수 있습니다. 구문 강조와 구문 형식 사이에는 근본적인 차이가 없습니다. 툴이 소스 코드에서 스파이스 한 클래스 다이어그램과 UML 다이어그램을 자동으로 만들 수 있다면 툴은 때때로 대담 할 수 있습니다.
whatsisname

9
이 답변에는 잘못된 의견이 많이 있습니다.
Jordan

11

풍부한 형식의 코드는 그렇게 멋진 아이디어가 아니기 때문에 따라 잡지 않았을 것입니다. 개인적으로, 나는 당신이 제시 한 예에서 보는 것을 좋아하지 않습니다. 구문 색상 표시 및 강조 표시를 사용하지만 서식이 너무 어려워서 코드를보고 쓰는 데 익숙하지 않은 방식과 너무 다릅니다.


11

왜 존재하지 않습니까? 수요 / 필요가 없습니다.

현재 편집자는 구문 강조 및 기타 사소한 스타일 옵션을 사용하여 프로그래머의 요구를 충족시킬 수 있습니다. "리치 텍스트"가 아닙니까?


7
+1 수요가 없습니다. 나는 그런 코드를 싫어합니다. 코드를 작성하지 않고 Word에서 해당 TPS 보고서를 입력하는 것 같습니다.

1
@ Glenn Nelson : 동의합니다. 가능한 경우 일반 문서를 입력해도 Word를 피할 수 있습니다 (대신 LaTeX를 사용함). 나는 구문 강조를 좋아하지만 풍부한 코드 형식은 실제로 방해가 될 것입니다.
조르지오

5

이것은 Emacs 용 AucTeX 모드의 LaTeX에 이미 존재합니다. 섹션 제목은 크기가 크며 하위 및 위첨자는 적절하게 크기가 조정되며 수학 미리보기 (및 알고리즘과 같은 다른 환경)를 거의 볼 수 없습니다.

코드에서 출력으로의 매핑은 일반적으로 다른 프로그램보다 훨씬 간단 하기 때문에 LaTeX에 적합 합니다. 좀 더 일반적인 언어에 대해서는 전혀 마음에 들지 않습니다.

이맥스이 할 수있는 또 다른 것은 같은 기호를 대체 할 것입니다 ->forall각각 하스켈을. Haskell에서 전혀 필요하지 않다는 점을 제외하고는 이러한 종류의 작업을 제안하는 것처럼 확장 할 수없는 이유는 거의 없습니다.


2

얼마 전에 프로그래머가 입력 한 코드의 형식을 원하는지 묻는 코드 형식에 대해이 질문을 했습니다.

내 질문은 형식화의 들여 쓰기 측면 만 다루었지만 일부 답변은 일반적으로 코드 형식화에 적용될 수 있습니다. 답변에 대한 전반적인 감정은 프로그래머가 코드가 표현되는 방식을 절대적으로 통제하지 못하는 것에 반대합니다.

내 개인적인 경험은 상당히 달랐습니다. 일반적으로 공개적으로 사용 가능한 도구를 사용하기도하지만 때로는 자체 맞춤형 편집기에서 XSLT를 작성해야합니다. 이 편집기는 왼쪽 여백을 들여 써서 입력 할 때 코드 형식을 지정하므로 원치 않는 공백 (XSLT에서는 중요)에 문제가 없으며 코드를 자동 줄 바꿈하면서도 형식을 유지할 수 있습니다. 필자는 경험이 상당히 자연스럽고 형식 지정 스타일이 줄 바꿈의 컨텍스트와 위치에 의해 제어된다는 것을 알게되었습니다 (터치 감지 입력 장치를 사용할 때 특히 경험이 좋습니다).

XSLT의 균형이 맞지 않으면 실제로 서식이 문제의 위치를 ​​표시하는 데 도움이됩니다. 입력 할 때 가로로 코드 이동을 조정하는 데 시간이 걸렸지 만 더 이상 방해가되지 않습니다. 그러나 XSLT의 세로 간격에 영향을 미치는 서식 기능이 편집기를 거의 사용할 수 없게 만들었으므로 이러한 기능을 비활성화했습니다.

귀하의 질문으로 돌아가려면 풍부한 코드 형식이 더 일반적이지 않은 이유는 프로그래밍 세계에서 인식이 변경되는 데 시간이 오래 걸리기 때문이라고 생각합니다. 키보드없이 코드를 편집하는 시간과 일치 할 가능성이 있습니다.


2

또한 몇 개 이상의 언어 (Haskell, Ruby, Python, Erlang, CoffeeScript 등)에서 들여 쓰기가 중요합니다. 따라서 글꼴 크기를 변경하면 파악하기가 매우 어려울 수 있습니다.

주로 전통. 나는 거의 20 년 동안 전문적으로 프로그래밍을 해왔고 그것이 나에게 불쾌감을 줄 것으로 생각된다. 나는 교과서와 함께 Emacs 또는 VI로 책을 썼으므로 WYSIWIG 팬이 아닙니다.


2

Knuth의 CWEB가이를 수행하지만 C / C ++ 및 Pascal에서만 작동합니다. — 그래도 살펴 봐야합니다 ... 매우 깔끔합니다. : 두 가지 프로그램입니다 ctanglecweave각각 텍 C에 별도의 CWEB 파일은 / 결합한다.


1
noweb거의 모든 언어로 작동합니다. 그리고 다른 많은 언어들 (lhs 등)에도 사용할 수있는 전문화 된 문맹 프로그래밍 시스템이 많이 있습니다. 일부 언어는 1960 년대 초부터 조판 기능을 제공했습니다. en.wikipedia.org/wiki/Stropping_(programming)
SK-logic

3
@ SK-logic-Arrgh, 글을 읽고 쓸 줄 아는 공포를 상기시켜주지 마십시오 . 모든 빠른 코드 검토 를 지루하고 긴 문서 검토로 전환하여 구의 마지막 전환과 잘못된 쉼표를 비판합니다. 방위 산업의 일부가 이것이 내가 결코 알지 못하는 좋은 생각이라고 생각한 이유. WYSIWYG 편집자가 더 나아질 것이라고 생각하지 않습니다.
Mark Booth

@Mark Booth, 잘못하면 무엇이든지 공포로 변할 수 있습니다. Literate Programming은 적절한 학문과 결합 될 때 훌륭한 도구입니다. 문맹 프로그래밍 도구없이 복잡한 TeX 형식의 수식, 도표 및 그래프로 코드에 주석을 달 수있는 방법을 모르겠습니다. 그리고 코드는 그러한 주석 없이는 더 이상 읽고 읽을 수 없습니다.
SK-logic

2

이전에 이와 같이 풍부한 형식의 코드를 보았거나 아이디어가 고려되어 결국 거부되었는지 알고 있습니까?

확실한. Xcode는 다양한 구문에 대해 간단한 색상 이외의 스타일을 지원합니다.

스타일이 지정된 소스 코드

내가 사용한지 오래되었지만 Metrowerks CodeWarrior는 스타일이 적용된 텍스트도 지원했으며 10 년 이상 전에 그랬습니다.

그러나 스타일이 너무 다양 할 때 텍스트, 소스 코드 등을 읽기 어려울 수 있습니다. 특히, 혼합 크기는 산만하고 열이 정렬되지 않는 것은 성가신 것으로 생각합니다. 대부분의 프로그래머가 여전히 고정 폭 글꼴을 사용하는 이유가 있습니다.

다른 질문은 스타일 텍스트를 언어 구문 자체의 일부로 사용해야하는지 여부입니다. 예를 들어, 컴파일러는 텍스트가 함수 선언인지 확인하기 위해 특정 텍스트에 특정 방식으로 스타일이 지정되어 있다는 사실을 사용해야합니까? 처음에는 미치게 들릴지 모르지만 Python 및 Fortran과 같은 언어는 이미 들여 쓰기를 구문으로 사용합니다. 그럼에도 불구하고, 우리는 스타일을 다른 방식으로 보지 않고 구문에 의해 계속해서 볼 가능성이 높다고 생각합니다. 일반 텍스트 (단순한 컴파일러, 플랫폼 독립성, 프로그래머 기본 설정)를 사용할 수 있다는 이점이 있으며, 다른 전통은 스타일 (들여 쓰기, 빈 줄, 마커 문자 및 코드 접기 및 탐색 메뉴와 같은 편집기 기능).


1

소스 코드의 서식은 구조와 의미가 훨씬 더 중요하고 타이핑하기 쉬운 정보 입력을 목적으로하기 때문에 널리 사용되지 않는다고 생각합니다. 글꼴 화, 추가 특수 기호 및 공백은 불필요한 시각적 노이즈를 추가합니다. 그래도 생성 된 문서에 적합 할 수 있습니다.

MS Word와 같은 WYSIWYG 편집기와 TeX (LaTeX)와 같은 시스템을 선호하는 사람들 사이에서 조판 세계에서 동일한 주제에 대해 화염 전쟁이 끝나지 않습니다.

일반적으로 명확한 답은 없습니다. 그것은 모두 도구, 사용 사례 및 개인 취향에 달려 있습니다.


1

Doxygen 또는 JavaDoc과 같은 도구는 이미 서식있는 텍스트 코드 형식을 수행합니다. 브라우징 목적으로 코드 하이퍼 텍스트를 추가합니다. 기본 서식을 지정하기 위해 특수 태그를 삽입 할 필요는 없습니다.

그러나 이것은 WYSIWYG가 아닙니다.


0

이것이 존재한다고 말하는 것이 두렵습니다.

과거에는 Centura (Gupta 또는 SQL / Windows라고도 함) (이전의 " 4GL ") 코드에서 작업했습니다. 메모장과 같은 표준 편집기에서 Centura 코드를 필요한 수준의 서식으로 편집하는 것은 실제로 불가능했습니다.

소스 파일을 이와 같은 형식으로 만드는 것이 좋은 생각 인 것 같지만 개발이 상당히 제한적이고 고통 스러웠습니다.

또한 소스 제어에서 병합 할 때 형식화로 인해 종종 문제가 발생했습니다.


0

다른 답변 외에도 풍부한 서식을 사용하는 기술적 인 어려움 외에도 개인적인 취향의 대상이라는 점을 지적하고 싶습니다.

일반 텍스트를 편집하면 원하는 글꼴과 색상을 선택할 수 있으며 자동으로 설정됩니다. 서식있는 텍스트를 편집하는 경우 수동으로 설정 한 특정 색상 및 글꼴이 마음에 들지 않으면 어떻게합니까?


1
나는 이것이 사실이라고 생각하지 않습니다. 프로그래머가 리치 텍스트를 사용했다면 프로그램의 구조를 설명하는 의미 론적 마크 업을 만든 생성기, 글꼴 및 색상 정보가 포함 된 사용자 정의 가능한 스타일 시트가있을 것입니다.
피터 올슨

그런 다음 @PeterOlson을 사용하면 텍스트 문자열의 지정을 인식하지 못하기 때문에 스타일 시트가 없으면 프로그램을 읽을 수 없습니다. 즉, 직접 만나면 아무도 아무것도 보여 주거나 글을 쓸 수 없습니다. 반대로, 현재 글꼴과 색상은 완전히 선택적이고 의미에 영향을주지 않으면 서 상호 교환 가능합니다.
corvinus

0

아무도 아직 코드 읽기와 코드 쓰기를 분리하지 않았기 때문이라고 생각합니다. 최소한 주류가되지는 않습니다. 때로는 오래 전에 만졌던 코드 나 다른 개발자가 만든 코드를 읽어야 할 때가 있습니다. 이 소스에서 단일 바이트를 변경할 준비가 될 때까지 많은 시간을 소비해야 할 것입니다. 이것은 쉽게 이해하기 위해 필요한 모든 것을 할 수있는 "읽기"모드 일 수 있습니다 (글꼴 크기, 형식 재 지정, 하위 스크립트, 수퍼 스크립트 등). 준비가되면 편집기는 "쓰기"모드로 전환 할 수 있고 덜 제한적이며 "최소한의 놀람 규칙"을 준수 할 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.