최고의 프로그래밍 편집자는? 확실한 승자가 없는 끝없는 싸움
게시 됨: 2022-03-11반대의 명백한 증거에도 불구하고 프로그래머는 인간입니다. 그리고 모든 인간으로서 우리는 선택의 자유를 이용하기를 좋아합니다. 그 선택이 빨간 약을 먹든 파란 약을 먹든, 드레스나 바지를 입든, 다른 개발 환경보다 한 개발 환경을 사용하든, 우리가 내리는 선택은 우리를 한 그룹의 사람들이나 다른 그룹으로 만듭니다. 선택은 필연적으로 옵션에 대한 평가 후에 옵니다. 그리고 선택을 한 후에는 다르게 선택하는 사람은 누구나 실수를 했다고 믿는 경향이 있습니다.
인터넷을 쉽게 검색하고 Emacs 대 Vim에 대한 수백 가지 토론을 찾을 수 있습니다. 다 읽어도 객관적으로 승자를 뽑는 것은 불가능하다. 그러나 개발 환경을 선택하면 개발자가 제공할 수 있는 작업의 품질에 대해 알 수 있습니까? 절대적으로하지!
훌륭한 개발자는 메모장에 자신의 코드를 작성하고도 훌륭한 기능을 제공할 수 있습니다.
확실히 전문가들이 작업을 위한 도구를 선택할 때 고려하는 사항이 많이 있습니다. 이것은 소프트웨어 개발을 포함한 모든 직업에 해당됩니다. 그러나 종종 선택은 쉽게 확인할 수 있는 것이 아니라 개인의 취향에 따라 결정됩니다.
프로그래머는 대부분의 시간을 개발 환경을 바라보며 보내므로 우리가 기능적일 뿐만 아니라 예쁜 것을 원하는 것은 당연합니다. 모든 개발 환경에는 장단점이 있습니다. 전체적으로 소프트웨어 개발 산업의 원동력입니다.
개발자가 선택한 프로그래밍 편집기와 같은 프로그래밍 도구 집합을 선택할 때 평가해야 하는 사항은 무엇입니까? 이 질문에 대한 답은 생각만큼 간단하지 않습니다. 소프트웨어 개발은 예술에 가깝고, 걸작과 고가의 수집품을 구분하는 "흐릿한" 요소는 거의 없습니다.
Java, C#, PHP, Python, Ruby, JavaScript 등 모든 프로그래밍 언어에는 프로젝트 구조, 디버깅 및 배포와 관련된 자체 개발 방식이 있습니다. 그러나 이들 모두의 공통점은 코드 편집입니다. 이 기사에서는 소프트웨어 개발에서 가장 일반적인 작업인 코드 작성의 관점에서 다양한 개발 플랫폼을 평가할 것입니다.
IDE 대 범용 텍스트 편집기
통합 개발 환경(IDE)(또는 대화형 개발 환경)은 소프트웨어 개발을 위해 컴퓨터 프로그래머에게 포괄적인 기능을 제공하는 소프트웨어 응용 프로그램입니다. IDE는 일반적으로 소스 코드 편집기, 빌드 자동화 도구 및 디버거로 구성되며 많은 추가 플러그인 및 확장을 지원합니다.
텍스트 편집기는 더 간단한 응용 프로그램입니다. IDE와 비교할 때 일반적으로 IDE의 코드 편집기 부분에 해당합니다. 그러나 그들은 종종 그 이상입니다. IDE는 소프트웨어 개발 목적으로 만들어지는 반면, 많은 텍스트 편집기는 개발자가 아닌 사람도 사용할 수 있도록 설계되었습니다.
정적 유형 언어는 IDE에서 많은 이점을 얻을 수 있습니다. 엄격한 유형 지정 규칙으로 인해 IDE는 컴파일하기 전에 편집기에서 직접 클래스와 모듈, 심지어 파일 간에도 버그와 이름 불일치를 감지할 수 있습니다. 이 기능은 많은 IDE에서 표준으로 제공되며 이러한 이유로 IDE는 정적 유형 언어에서 매우 인기가 있습니다.
그러나 동적으로 유형이 지정된 언어에 대해 동일한 작업을 수행하는 것은 불가능합니다. 예를 들어, 메소드 이름이 일련의 문자열 연결로 구성된 코드 자체에 의해 생성될 수 있는 경우 동적 언어에서 이름 지정 오류를 감지하려면 실제 프로그램을 실행하는 것 외에는 아무것도 필요하지 않습니다. IDE의 주요 이점 중 하나는 동적 언어 프로그래머에게 적용되지 않기 때문에 Sublime과 같은 텍스트 편집기를 고수하는 경향이 더 큽니다. 참고로 이것은 테스트 주도 개발 운동이 동적 언어 커뮤니티를 중심으로 성장하고 정적 언어만큼 강력한 지지를 얻지 못한 주요 이유이기도 합니다.
훌륭한 프로그래밍 편집기는 무엇입니까?
다양한 언어에 대한 다양한 기능 외에도 모든 프로그래밍 편집기에는 잘 조직되고 깔끔한 사용자 인터페이스가 필요합니다. 전체적인 미적 매력도 간과해서는 안 됩니다. 글꼴과 색상을 올바르게 선택할 수 있는 잘 설계된 편집기는 눈의 피로를 덜어주고 생산성을 높이는 데 도움이 되기 때문에 단순히 보기에 좋은 문제가 아닙니다.
오늘날의 개발 환경에서는 기능 세트에 관계없이 가파른 학습 곡선이 문제입니다. 시간은 언제나 소중하기 때문에 좋은 편집자는 익숙해지기 쉬워야 합니다. 이상적으로는 프로그래머가 너무 많은 작업을 건너뛸 필요 없이 즉시 작업을 시작할 수 있어야 합니다. 스위스 군용 칼은 실용적이고 유용한 도구이지만 누구나 몇 분 안에 마스터할 수 있습니다. 마찬가지로 프로그래밍 편집자에게 단순함은 미덕입니다.
사용자 인터페이스, 기능 및 워크플로
프로그래밍 편집기의 일부가 되어야 하는 UI, 다양한 기능, 자주 사용하는 도구에 대해 자세히 살펴보겠습니다.
물론 라인 번호는 기본적으로 켜져 있어야 하고 켜거나 끄기가 간단해야 합니다.
스니펫은 고정 레이아웃에 표준화된 텍스트 블록을 삽입하는 데 유용합니다. 그러나 프로그래밍은 말을 한 번만 하는 것이므로 나중에 코드를 유지 관리하기 어렵게 만들 수 있으므로 스니펫에 주의하십시오.
현재 파일을 린트하거나 구문 검사하는 기능은 파일을 실행하는 기능과 마찬가지로 유용합니다. 이 기능이 없으면 프로그래머는 외부 명령줄 창으로 전환하고 올바른 명령을 선택하고 실행한 다음 오류 메시지를 단계별로 살펴보고 오류의 원인을 찾아야 합니다. 그러나 보푸라기로 인한 지연이 결정적인 순간에 코더를 방해할 수 있으므로 보풀은 프로그래머의 제어 하에 있어야 합니다.
인라인 문서는 방해가 되지 않는 한 유용하지만 클래스 정의에서 브라우저 페이지를 열어두는 것이 때때로 더 유용합니다. 특히 서로 직접적으로 확장하지 않는 관련 클래스가 많은 경우에는 더욱 그렇습니다. 브라우저 문서에서 작성 중인 코드로 코드를 잘라내어 붙여넣는 것은 충분히 쉽기 때문에 인라인 문서의 추가적인 복잡성은 문서에 대한 프로그래머의 지식이 증가함에 따라 종종 덜 유용하고 실제로 더 성가시게 됩니다.
단어 완성은 빠르고 덜 방해가 되면서 편집 문서만큼 안정적이기 때문에 도움이 됩니다. 단어의 몇 글자만 입력한 다음 Enter 키를 눌러 나머지를 얻는 것은 만족스럽습니다. 그렇지 않으면, 더 긴 exponentialFunctionSquared
보다는 ee
를 입력하려는 게으른 프로그래머가 혐오하는 과도한 입력의 압박에 시달리게 됩니다. 단어 완성은 타이핑을 최소화하고 일관된 명명을 적용하고 방해하지 않음으로써 만족합니다.
프로그램 전체에서 변수와 함수의 이름을 바꾸는 것은 유용하지만 변경 사항을 검토하고 코드가 손상되지 않았는지 확인할 수 있어야 합니다. 다시 말하지만, 단어 완성은 모든 언어에서 작동한다는 점에서 유용한 중간 방법입니다. 입력 오버헤드를 발생시키지 않고 수명이 긴 항목에 긴 이름을 사용할 수 있습니다. 너무 많은 줄에 퍼질 수 있는 표현식을 줄이기 위해 로컬에서 더 짧은 이름을 통해 참조를 사용할 수 있습니다. 이름을 바꿔야 하는 경우 긴 이름이 고유하므로 이 접근 방식은 모든 언어와 모든 파일에서 작동합니다.
소스 파일은 때때로 많이 커질 수 있습니다. 코드 접기는 긴 파일을 쉽게 읽을 수 있는 좋은 기능입니다.
메타 문자 및 정규 표현식을 사용하여 로컬, 증분 또는 전역으로 범위 제한이 있는 찾기/변경은 구문 강조와 마찬가지로 오늘날 최소 요구 사항의 일부입니다.
인기 있는 프로그래밍 편집기 개요
수년에 걸쳐 나는 여러 편집자를 거쳤고 다음과 같이 생각했습니다.
Emacs: 세계에서 가장 인기 있는 편집자 중 하나입니다. Emacs의 가장 큰 특징은 확장 언어의 복잡성에도 불구하고 확장성입니다(
Mx tetris
로 Tetris를 재생할 수도 있습니다). Emacs 팬들은 터미널 기반 인터페이스가 훌륭한 기능이라고 생각하지만 다른 사람들은 이것이 단점이라고 논쟁할 수 있습니다. 제 개인적인 경험으로는 받아들이고 배우는 것이 너무 많다는 것을 알았습니다. 당신이 Emacs 사용법을 안다면 다른 어떤 것도 사용하지 않을 것이라고 확신하지만, 전체 문화를 받아들이고 배우는 것은 내가 원하는 것 이상이었습니다. 그럼에도 불구하고 개발자들 사이에서 인기를 얻은 것은 그것이 옛날의 유물과 거리가 멀고 우리의 미래의 일부로 남아 있음을 증명합니다.Vi/Vim: Vim은 또 다른 강력한 터미널 기반 편집기이며 대부분의 xNIX 운영 체제에서 표준으로 제공됩니다. Emacs와 인터페이스가 다르다는 점을 제외하면 제 생각은 거의 같습니다. 당신이 그것에 대해 자랐다면, 나는 당신이 다른 것을 절대 사용하지 않을 것이라고 확신합니다. Vi 기술이 있으면 SSH 및 기타 좁은 공간을 통해 작업할 때 삶이 훨씬 단순해지며 키 입력에 익숙해지면 속도 문제가 발생하지 않습니다. Emacs만큼 해독하기 어렵지는 않지만 학습 곡선은 여전히 매우 가파르고 창 편집기의 몇 가지 좋은 기능을 확실히 사용할 수 있습니다.
SublimeText: SublimeText는 이름 그대로 수많은 기능을 갖춘 아름다운 텍스트 편집기입니다. 일부 유사한 편집기와 달리 SublimeText는 비공개 소스이므로 낮은 수준에서 수정할 수 없습니다. SublimeText는 간결하고 빠른 UI로 기존 텍스트 편집기의 단순성을 제공합니다. 많은 개발자가 Vim보다 사용하기 쉽다고 생각하며 특히 신규 사용자에게 해당됩니다. 학습 곡선은 그렇게 가파르지 않습니다. UI는 최소화되고 간단하지만 SublimeText는 UI 오른쪽의 축소된 디스플레이 코드와 같은 몇 가지 멋진 기능을 제공하므로 사용자가 코드를 빠르게 스크롤하고 상대적으로 쉽게 탐색할 수 있습니다. 완전히 무료는 아니지만 기능이 제한된 데모 버전은 무료입니다. 모든 기능을 잠금 해제하려면 $70의 비용이 듭니다.
Atom은 차세대 개발자를 위한 프로그래밍 편집기를 만들기 위한 GitHub 노력의 결과입니다. 아직 진행 중인 작업이지만 Atom은 새로운 확장, JavaScript 라이브러리 등에 관심이 많은 개발자 커뮤니티가 있는 매우 유능한 편집기입니다. 단점으로는 일부 UI 단점, 일부 추가 기능 패키지가 오작동할 수 있는 가능성, (매우) 큰 파일로 작업할 때 보고된 성능 문제가 있습니다. 그러나 이 프로젝트는 활발히 개발 중이며 현재의 단점이 개선될 가능성이 있습니다. Atom은 오픈 소스 프로젝트이며 필요에 따라 쉽게 해킹될 수 있습니다.
나노: 빡빡한 구석에서 탁월하지만 주석을 줄 지어 유지하면서 키 입력을 통해 코드 블록을 들여쓰기 위해 고군분투하므로 이 작업을 수행하는 더 빠른 방법이 있어야 한다는 불가피한 생각을 방지할 만큼 기능이 풍부하지 않습니다. 80열에서! 텍스트 강조 표시도 없으며 구성 파일 변경 이외의 용도로 사용해서는 안됩니다.
TextMate2: TextMate의 가장 큰 단점은 Mac에서만 실행된다는 것입니다. 제작자가 말했듯이 "TextMate는 운영 체제에 대한 Apple의 접근 방식을 텍스트 편집기의 세계로 가져왔습니다." UNIX 토대와 GUI를 연결함으로써 TextMate는 전문 스크립터와 초보 사용자 모두의 이익을 위해 두 가지 장점을 모두 선택합니다. 많은 Ruby, Python 및 JavaScript 개발자가 선택하는 편집기이며 Bash 또는 Markdown도 훌륭하게 지원합니다. 이 기사를 게시하는 시점에서 TextMate 2는 아직 베타 버전이지만 Emacs의 확장을 넘어 확장할 것을 약속하는 매우 성숙한 플러그인 생태계가 이미 있습니다.
jEdit: Java 기반이며 일부에서는 느린 것으로 간주됩니다. 기본 구성은 특정 사람들을 밀어낼 수 있지만 jEdit는 올바르게 구성하면 매우 빠르고 보기에도 매우 좋습니다.
Eclipse: 널리 사용되는 또 다른 IDE인 Eclipse는 Java 개발자들 사이에서 매우 인기가 있지만 다양한 플랫폼에 적용되었습니다. 우리는 그것의 모놀리식 아키텍처가 그것을 물 속으로 끌어당기는 바위라고 주장할 수 있지만, 여전히 개발자들 사이에서 가장 인기 있는 플랫폼 중 하나입니다.
Aptana Studio: 포괄적인 오픈 소스 웹 애플리케이션 IDE. Eclipse 플러그인으로 사용할 수 있어 일부 Java 개발자에게 인기가 있습니다. 독립 실행형 버전은 훨씬 더 가볍고 다양한 테마와 사용자 정의 옵션을 제공합니다. Aptana의 프로젝트 관리 기능은 Eclipse에서 기술을 연마한 코더에게도 유용할 수 있습니다. 이전 버전은 일부 하드웨어 플랫폼에서 성능 문제를 겪었지만 이러한 문제는 Aptana Studio 3에서 해결되었으며 과거의 일이 되어야 합니다.
NetBeans: 크로스 플랫폼을 지원하는 비교적 인기 있는 또 다른 오픈 소스 IDE입니다. SublimeText와 같은 린 편집기보다 시작 시 다소 느리고 일부 대안에 비해 추가 기능 선택이 제한됩니다. 많은 Java 개발자는 원활한 SCM 통합 및 HTML5 지원 덕분에 NetBeans를 사랑하게 되었습니다. PHP에 대한 NetBeans 지원도 최신 릴리스에서 향상되었습니다.
JetBrains: Java, Ruby, Python 및 PHP용 IDE 제품군을 제공합니다. 모두 동일한 코어 엔진을 기반으로 합니다. 그 자체로 매우 유능한 JetBrains IDE는 점점 더 많은 추종자를 얻고 있습니다. 그러나 30일 평가판을 사용할 수 있고 가격이 합리적이지만 무료 오픈 소스 솔루션은 아닙니다.
코모도 에디트: 코모도 에디트는 큰 잠재력을 가지고 있지만, 직교성 부족으로 좌절할 수 있는 성가신 작은 "고치"와 특이성으로 가득 차 있습니다. Komodo Edit는 어수선한 느낌이 듭니다. 분명히 엄청난 기능을 가지고 있기 때문에 부끄럽습니다. 나는 내가 어떤 조직 원칙을 놓쳤기를 바라는 마음으로 계속 Komodo Edit로 돌아가고, 매번 나는 무질서한 능력의 덩어리에 의해 뒤쳐집니다.
Geany: Geany는 이 목록에 있는 다른 많은 편집자들처럼 주요 파워 플레이어가 아닙니다. 그것은 "있는 것"보다 "없는 것"으로 더 많이 정의됩니다. 느리지 않고, 옛날부터 많은 유산을 가지고 있지 않으며, 매크로 기능이 없거나 버퍼 기능에 대한 다중 창을 많이 가지고 있지 않습니다. 그러나 그것이 하는 일은 충분히 잘합니다. 아마도 내가 시도한 모든 편집자 중 가장 덜 까다로웠고 여전히 프로그래머의 편집자에게서 기대할 수 있는 것의 90%를 수행할 수 있습니다. Geany는 Ubuntu에서 충분히 좋아 보입니다. 이것이 제가 선호하는 편집기로 선택한 이유 중 하나입니다.
나의 결론
이러한 훌륭한 도구 중 최고의 프로그래밍 편집기로 단 한 명만 선언하는 것은 주제넘은 일입니다. 그리고 제가 시도조차 하지 않은 에디터들이 꽤 있습니다. 만능 솔루션은 없습니다. 이것이 내가 여러 다른 편집기를 시도하도록 강요한 이유입니다. 편집기 수명에 더 관심이 있다면 코드 편집기에 대한 Roben Kleene의 평가도 읽고 싶을 것입니다.
현재 Geany를 사용하고 있지만 제 요구 사항에 적합하기 때문입니다. Geany와 Perl/Gimp/Audacity/Sox의 많은 도움으로 저는 제가 개발하는 Android 앱을 위한 Java 코드 기반을 개발 및 유지 관리할 수 있으며 여러 배포자, 소스, 린트를 위한 다양한 구성으로 컴파일을 준비할 수 있습니다. , 컴파일, 덱싱 및 .apk
파일을 생성하고 이러한 앱을 전 세계적으로 제공합니다.
귀하의 개발 라인은 다른 요구 사항 집합을 규정할 수 있으며 가장 적합한 프로그래밍 편집기를 찾는 데 시간을 절약할 수 있기를 바랍니다.