IDE와 표준 편집기의 사용을 정당화하는 것은 무엇입니까? [닫은]


39

나는 최근에 IDE보다 훨씬 자주 선택한 텍스트 편집기 (vim, nano, gedit, 독을 선택)를 사용합니다.

이 경이에 대해 생각하기 시작 먼지 나는 점점 내 IDE 바로 가기 몰래 후 텍스트 편집기에 반대에 대한 정당화는 IDE의 사용 무엇을 ?

이 문제에 대해 IDE를 사용 하지 않고 편집기에만 의존 하는 이유는 무엇 입니까?



당신이 실제로 무엇을 당신의 편집기에서?

코드 작성, 응용 프로그램 개발 등.
Chris

15
개인적으로 IDE는 다른 사람의 코드 (특히 큰 프로젝트)를 읽을 때 내 코드를 작성할 때보 다 훨씬 유용 합니다. IDE를 사용하면 소스를보다 쉽게 ​​탐색 할 수 있으므로 다른 사람의 소스 코드를보다 쉽게 ​​이해할 수 있습니다.
Charles Salvia

3
질문을 바꾸고 싶습니다. IDE를 사용하지 않는 것이 정당한 것.
일러

답변:


69

I : 통합 . 좋은 텍스트 편집기는 코드를 작성하는 데는 좋지만 대부분의 프로그래밍은 작성하는 데 소비되지 않습니다. 테스트와 디버깅에 소비되었으며 텍스트 편집기가 컴파일러 및 디버거와 통합되기를 원했습니다. 이것이 IDE의 가장 큰 장점입니다.


내가 방해가되지 않는 것을 찾을 수 있다면 :)
Tim Post

5
통합의 편의를 위해 지불하는 가격으로 하위 파 편집을 수락했습니다.
TMN

프로그래밍을 제대로하면 테스트하지 않습니까? 디버깅과 원숭이 테스트에 대부분의 시간을 소비한다면 문제가 어디 있는지 알 것입니다.
Tom Hawtin-tackline

8
@Tom, Testing은 항상 수행 하는 테스트를 자동화 할 수있는 프로그래밍 입니다. 그렇지 않으면 어떤 방법 으로든 최고의 품질을 얻을 수 있는지 확인하십시오.
Andres Jaan Tack

49

이것들은 내가 좋아하는 IDE 인 IntelliJ의 가장 좋아하는 기능이며 Java, PHP, Javascript, HTML, 심지어 ActionScript에도 사용합니다.

  • 오류 검사 -코드의 실시간 철자 검사와 같습니다. 절대적으로 필수입니다.
  • 코드 탐색 - Ctrl+click함수, 변수, 유형에서 정의로 이동합니다. (IntelliJ는 위의 모든 언어에서 이것에 매우 능숙합니다)
  • 코드 완성 - Ctrl+space필요한 클래스 또는 메소드 이름을 채우는 데 지속적으로 사용 합니다. 이렇게하면 코딩 속도가 빨라지고 필요한 컨텍스트에 액세스 할 수 없을 때 버그가 발생하기 전에 버그를 잡을 수 있습니다. IntelliJ는 두문자어 유형 NPE를 확장하고 히트 Ctrl+space하며 "NullPointerException"을 표시 하도록 도와 줍니다. "NoPageError"등 Alt+enter자동으로 추가하는 import것도 정말 좋습니다.
  • 코드 생성 -게터 및 세터 생성, 몇 번의 클릭으로 인터페이스에서 메소드 구현.
  • 매우 좋은 코드 채색 -IntelliJ는 표준 키워드, 문자열, 변수 이름 채색뿐만 아니라 멤버 변수, 로컬 변수, 매개 변수도 채색합니다. ActionScript에서 실제로 setter / getter 인 변수는 함수처럼 색상이 지정됩니다.
  • 리팩토링 -실수없는 이름 바꾸기가 가장 큽니다. IntelliJ는 setter 및 getter 또는 문자열 사용법의 이름을 바꾸는 데 매우 능숙합니다. 물론 정규식 검색 및 교체가 필요할 때 필요하며 "myNumber", "MyNumber"및 "MYNUMBER"를 "myString", "MyString"및 "MYSTRING"으로 바꿀 수있는 "precase case"옵션이 있습니다. 한 번의 조작으로
  • 버전 제어 통합 -우리는 SVN을 사용하며, 내가 좋아하는 IDE VC 기능은 SVN에 대해 생각하지 않고 클래스를 생성, 삭제, 이동, 쉽게 탐색 내역, 매우 우수한 diff 도구, 우수한 병합 기능 및 파일 주석 달기 (줄 표시) by line history)로 이동합니다.
  • 종속성 가져 오기 -소스가있는 타사 라이브러리에 의존하는 경우 참조, 디버깅 등을 위해 코드를 쉽게 탐색 할 수 있습니다.
  • 스마트 타이핑 -코드 붙여 넣기 및 올바른 탭 위치에 자동 붙여 넣기, 대괄호 자동 완성, 괄호, 따옴표 등
  • JUnit, FlexUnit, PHPUnit을위한 매우 훌륭한 테스트 러너
  • 물론 디버깅 . JBoss, Jetty, 심지어 Flash까지 완벽하게 디버깅합니다. 스택 추적을 Ctrl + 클릭하면 코드로 바로 이동합니다.

코드 채색과 같은 것은 당연한 것으로 여겨지지만 좋은 코드 채색은 말초 비전과 같습니다. 그것은 전체 단어를 식별하기 위해 몇 초를 더 흘리지 않고도 중요한 것들에 집중할 수 있습니다.

IntelliJ는 Ctrl+space변수 이름 제안 에도 사용 합니다. Java에서 새 EventMessageItem 변수를 선언하고을 누르면 Ctrl+space"eventMessageItem", "eventMessage", "item"등이 제안됩니다.

이러한 모든 것들이 나에게주는 방법으로 내 코드와 아키텍처에 대해 생각하고, 등 등 문서를 추격, 파일 시스템을 다루는 포맷을 고정 오류를 복사 및 붙여 넣기 고정, 응용 프로그램 간의 전환에 대해 덜 생각하는 더 많은 시간을 그런 종류의 생산성 향상에 대해 어떻게 거절 할 수 있는지 모르겠습니다.


4
+ 1 언급에 대한 IntelliJ 아이디어-난 그냥 사랑
artjom

3
+1, 여기에있는 대부분의 포인트는 괜찮은 IDE에 적용되거나, :)
Matthieu

21

IDE는 편집기보다 코드를 훨씬 잘 이해합니다. 예를 들어, 식별자 완성 및 리팩토링이 가능합니다. Java와 같은 장황한 언어의 경우 신이 보냅니다.


1
이 모든 이해를 위해서는 메모리를 저장해야합니다. 따라서 IDE는 "플로피에 맞추기"편집기와 비교할 때 리소스가 부족한 경향이 있습니다.

19
네,하지만 8Gb i7 개발 기기는 입력하는 동안 무언가를해야합니다. : D
도미니크 맥도넬

십오 일이없는 자원 배가 될 수 있습니다. 그러나 스몰 토크는 아마도 가장 중요한 경우 일 것입니다. 리플렉션은 쉽고 매우 간단한 구문입니다.
Frank Shearar

@Frank, 당신이 원하는 것을하고 얼마나 쉬운 지에 달려 있습니다.

18
[To the IDE] You had me at intellisense/autocomplete

1
+1 더 이상 완전한 클래스, 메소드 또는 속성 이름을 입력하지 않으며 올바른 자동 완성 옵션을 한 번에 얼마나 많이 입력해야하는지 정확히 아는 것이 항상 당혹 스럽습니다. tic-tic-tic-TAB- dot-tic-tic-tic-TAB-dot-tic-tic-tic
grossvogel 1

5
@gross, 그러나 맞습니다 ! 수동 입력은 입력 오류를 의미합니다.

@ TThorbjørnRavnAndersen 이름이 비슷한 두 가지가 없으면 우연히 올바른 문자를 입력하기에 충분한 문자를 입력하지 않습니다. 자동 완성에주의를 기울이지 않아서 "NumberOfSegments"가 필요한 몇 가지 영역에 실수로 "NumberOfPoints"속성을 삽입했습니다 : p. 즉, 자동 완성 기능이 아닌 것입니다.
KChaloux

14

생산력. 이해가되는 다른 정당성이 있습니까? 필자는 프로그래밍, 코드 작성, 편집, 소스 제어 사용, 디버깅, 프로젝트 관리 도구와의 상호 작용, 다른 프로그래머와의 커뮤니케이션, 문서 작성, 자동화 된 테스트 실행 중 수행하는 많은 기능을 중앙 집중화하는 잘 설계된 IDE -프로세스 마찰을 크게 줄여서 생산성을 떨어 뜨립니다.

또한 각 도구를 개별적으로 사용하는 방법을 알아야한다고 생각하지만 그럴 필요는 없습니다. 적어도 저에게 CLI를 열고 입력하는 것보다 마우스 오른쪽 버튼 클릭이 무한대로 선호됩니다.

나는 많은 것을 사용했지만 반복해서 돌아가는 IDE는 Visual Studio, Wing IDE 및 NetBeans입니다. 모두 프로그래밍에 소비하는 시간에 상당한 가치를 부여합니다.


9

역사적으로 IDE는 단일 작업 컴퓨터에서 비교할 수없는 편의를 제공했습니다. 첫 번째 C 컴파일러에는 edit-compile-run 사이클에서 다음 단계가 필요했습니다.

  • 에디터 시작
  • 프로그램 편집
  • 프로그램 저장, 에디터 종료
  • 컴파일 프로그램
  • 컴파일 된 프로그램 조립
  • 컴파일 및 조립 된 프로그램 링크
  • 프로그램 실행

내 CP / M 시스템에서. (일괄 프로그램이 디스크 드라이브를 더 크게했을 때 많은 부분을 자동화 할 수있었습니다.)

Turbo Pascal을 받았을 때 컴파일 및 디버깅하는 동안 편집기를 사용할 수있게되어 기뻤습니다.

그것이 IDE가 처음에 인기를 얻은 이유라고 생각합니다.


그러나 이러한 모든 작업은 많은 편집자들이 수행 할 수 있습니다. 예를 들어 이맥스.
JasonFruit

@JasonFruit : 물론입니다. 나는 그들이 처음으로 나를 유혹 한 것을 설명하고 있습니다. 당시에는 TRS-80 Mod 4에서 CP / M을 실행하고 있었고, 이멕스는 여전히 TECO 기반이라고 생각합니다.
David Thornley

알았어 :-) (이모티콘 문자의 필요한 번호를 기입합니다.)
JasonFruit

2
@JasonFruit, CP / M-80 머신은 최대 64Kb RAM을 가졌습니다. 얼마나 많은 이맥스를 넣을 수 있는지 생각해보십시오.

7

Lisp로 코드를 작성하는 경우 Emacs는 메소드 매개 변수 검색 및 자동 완성과 같은 Intellisense와 유사한 기능을 가지고 있으므로 원래 IDE라고 말할 수 있습니다. 여러 작업 (일반적으로 편집, 셸 / 명령 프롬프트, 뉴스 읽기)에 하나의 프로그램을 사용할 수있는 것도 좋습니다.

일반적으로 편집기 대 IDE 질문은 프로그래밍 언어에 의존하는 것 같습니다. 예를 들어 Ruby와 Haskell 코더는 좋아하는 텍스트 편집기를 선호하는 것 같습니다.


이맥스는 실제로 거의 모든 언어로 그렇게 할 수 있습니다. PHP 모드는 꽤 좋으며 Javascript, Haskell, Erlang 및 SQL 모드입니다. (다른 것들도 좋을지 모르지만 나는 그것을 사용하지 않았습니다).
Zachary K

일단 모든 종소리와 휘파람을 emacs (또는 그 문제에 대한 편집기)에 추가하면 IDE가됩니다. 통합 개발 환경. 나는 그것을 빵집 (IDE)에서 케이크를 구입하는 것과 처음부터 만드는 것 (트릭 아웃 된 편집자)과 비교합니다
sal

+1, Coq, Haskell 및 Lisp Emacs는 괜찮은 지원을받는 유일한 것입니다.
jozefg

4
  • 원 클릭 컴파일
  • 디버깅
  • 코드 템플릿
  • 코드 완성
  • 버전 제어 및 리팩토링 도구와 통합
  • 간단한 단위 테스트

몇 가지를 말하면


3

나는 그 대답이 당신이 사용하는 프로그래밍 언어와 당신이 얼마나 잘하는지에 달려 있다고 생각합니다. JAVA와 같은 언어의 경우 심각한 작업을 수행하는 경우 IDE가 필요합니다. JS 또는 Ruby IDES와 같은 스크립팅 언어와 관련하여 어디에서나 많이 사용되지는 않습니다.

메모장 ++과 개발을 위해 쉘 스크립트 (백업, git commits)를 사용하며 완벽하게 작동합니다.


Javascript에 GVIM을 사용하고 IDE를 사용하는 것보다 훨씬 빠릅니다. 또한 훨씬 적은 메모리를 사용합니다. jsLint, 포맷 및 셀레늄 제어와 같은 것에 대해 약 3-4 개의 쉘 스크립트를 추가하면 키보드에서 손을 떼지 않아도됩니다. (그리고 솔직히 말하면 내가 돌보면 모든 스크립트를 VIM 플러그인으로 바꿀 수있을 것이다)
Zachary K

3

"편집자"에 찬성하는 몇 가지 주장 :

  1. IDE가 아직 개발되지 않았거나 아직 개발되지 않은 경우가 있습니다.
  2. 편집기를 사용하면 "보다 빠르고"더 외과 적으로 변경할 수 있습니다.
  3. 훨씬 적은 리소스가 필요합니다 (많은 개방형을 동시에 사용하기가 더 쉽습니다)
  4. 여기에 설명 된 것과 같은 일부 문제를 해결할 수있는 유일한 방법이기 때문입니다 .
  5. (개인) 때로는 모든 것을 타이핑해야 할 때, 나는 내 의식을 사용하여 더 많이 일하고 있고 내가 타이핑하는 것에 더 관여하고 있습니다. 예를 들어 IDE를 사용하여 눈에 띄지 않는 메소드 (formaqString)에서 맞춤법 오류가 발견되었습니다.
  6. 키보드 만 사용하여 작업하기가 더 쉬워집니다 (속도 / 흐름)
  7. 매크로 또는 다른 시간 절약을 사용하는 정신.

나는 매일 IDE를 사용하여 일하고, 그렇지 않으면 Java / C #을 작성하는 것이 어렵습니다.

(2) (3)과 비교 : 기본적으로 파일을 원격으로 (ssh / 원격 데스크톱을 통해) 편집하고 원격 서버 구성이나 파일을 최소한으로 변경하는 옵션.


2

언어에 따라 일부 IDE에는 시각적 양식 / 창 디자이너도 포함됩니다.

지적해야하지만 프로그래머의 텍스트 편집기와 IDE 사이의 선은 잘 정의되어 있지 않습니다. 컴파일, 코드 완성, 디버깅 등을 처리하기 위해 많은 편집기를 확장 할 수 있습니다.


2

IDE는 편집 기능이 심각하지 않기 때문에 테스트 / 디버깅 / 통합을 위해 IDE를 사용하고 편집을 위해 KEDIT을 사용합니다.
.NET IDE는 외부 편집 내용을 인식하므로 편집기에 저장하고 소스를 다시로드하라는 메시지를 수락하기 만하면됩니다. 이를 통해 편집 및 디버깅 기능을 동시에 최적화 할 수 있습니다.
다른 IDE의 경우 KEDIT를 템플릿 프로세서 및 소스 검색 프로그램으로 사용하고 해당 소스를 IDE에 복사 / 붙여 넣습니다.


IDE가 할 수없는 kedit에서 무엇을합니까? 나는 코딩 내 심각한 대부분이 결코 사용 아무것도하지만, IDE를 가지고, 진정으로 궁금 하군요 ...
딘 하딩

KEDIT에는 다른 스마트 편집기와 마찬가지로 IDE에서 할 수없는 작업을 수행 할 수있는 스크립팅 기능이 있습니다. 예를 들어, KEDIT를 사용하여 IDE가 접근 할 수없는 여러 버퍼 (kedit 세션 당 최대 100 개) 복사 및 붙여 넣기 및 열 편집을 수행합니다.
Dave

1

IDE의 경우 :
-고급 기능이 기본 제공됩니다.
-일부 기능은 프레임 워크에 따라 매우 다르므로 편집자는 이에 상응하지 않습니다.

편집자 :-
키보드를 손에 들고 있습니다.
개발자 환경은 모든 시스템에서 동일
하며 편집기에
더 나은 스크립팅 이 가능합니다. IDE의 일부 기능은 외부 도구 또는 스크립트와 함께 사용할 수 있습니다. (지능형, goto 정의, 참조 찾기)


0

짧은 학습 곡선. 그게 다야.


4
난 당신이 IDE의 모든 종류의 끝나가는 않은 것 같아요
헤럴드 Scheirich

4
부조종사로서 vim을 사용하면 필요하지 않습니다.
nate c

짧은 학습 곡선 ....? 용서하지만 이것은 나에게 분명하지 않았다.
Chris

0

내가 정말로 권장하는 유일한 것은 디버거입니다. IDE는 실제로 다른 구빈이 추가 된 편집기이지만 명령 프롬프트에 make (또는 위쪽 화살표 + enter)를 입력하여 컴파일 할 수 있으면 IDE 가 필요 하지 않습니다 . 탐색기를 마우스 오른쪽 버튼으로 클릭하고 오른쪽 메뉴 항목을 선택하여 SCM에 커밋 할 수 있으면 IDE가 필요하지 않습니다.

이제 일부 사람들은 리팩토링 지원 (코드를 처음으로 작성하십시오 :) 또는 일부 통합 GUI 디자이너 (Visual Studio를 사용하여 VS의 거친 XAML 지원이 아닌 Expression을 사용하여 GUI 작업을 수행하는 것과 같은 것들이 필요하다는 것을 알고 있습니다. ), 많은 사람들 이 지능적이고 자동 완성 이 필요합니다 (특히 Java 및 C #과 같이 긴 이름을 가진 장황한 언어의 경우).

그러나 저에게는 GUI 디버거가 IDE를 사용하는 유일한 이유입니다. 나는 여전히 'command-line'디버거 (잘, windbg)를 사용하지만 일상적으로 내장 된 VS를 사용합니다.


0

IDE에는 이점이 있습니다. 모든 언어에 실제로 스케일을 기울일 수있는 포괄적 인 IDE가있는 것은 아니며, 해당 언어에 대한 언어를 만들기가 엄청나게 어려울 수 있습니다. 왜 IDE를 원할까요? 다음과 같이 시작하십시오.

  • 이 언어에는 IDE 팝업에서 개발 속도를 높일 수있는 풍부한 표준 API가 있습니다.
  • 보일러 플레이트 코드가 많이 있습니다. (강제 시도 / 캐치, 게터 / 세터 등)
  • 자동 완성은 코딩 요구를 정확하게 충족시킬 수 있습니다
  • 귀하의 언어 단위 테스트 스위트는 해당 IDE에 통합되어 있습니다.
  • IDE는 모범 사례와 관련하여 수많은 언어 공통 라이브러리를 인식하고 지원합니다.
  • 작업 mo'betta를 만들기 위해 사용 가능한 플러그인
  • 너무 무겁지 않아 시스템 속도가 느려집니다.
  • 고도로 통합 된 디버거? 도움이됩니다.

문제는 모든 언어가 실제로 포괄적 인 IDE에서 큰 생산성 향상을 얻는 것은 아닙니다. 나는 내가하는 일부 작업 (Java, C #)에는 IDE를 사용하지만 다른 작업 (Python, Ruby, Coldfusion)에는 사용하지 않습니다. 그것은 모두 실제로 균형을 잡는 행동입니다. 일부 언어에는 이러한 포괄적 인 제품군이 필요하지 않습니다.

각각에 대한 IDE가 있습니까? 확실한. 항상 필요합니까? 실제로는 아닙니다.

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