질문 제목이 맞는지 확실하지 않지만 질문을 읽어보십시오.왜 의존성 관리가 복잡해야합니까?
저는 직장 생활의 대부분 (11 년 가까이) 동안 C/C++ 작업을 해왔습니다. 우리는 C/C++ 소스/헤더 파일만을 가지고 있었고 모든 의존성은 Makefiles에 의해 관리되었습니다. 일은 간단하고 다루기 쉽습니다.
지난 1 년 동안 나는 자바 도메인으로 이동했다. 그리고 나는 이 극도로 짜증을 낸다고 느낀다. 새로운 것을 다루는 가장 어려운 측면은 의존성 관리자 다. 예 : 빌더, 빌더, 빌더, 기타 등등
오픈 소스 세계에서 새로운 것을 다운로드 할 때마다 컴파일, 빌드, 실행 환경을 설정하는 데 상당한 시간을 할애 할 수 있습니다. 그것도 내가 일식을 사용하고 있습니다. 왜 모든 종속성을 다운로드 할 소프트웨어와 함께 배치 할 수 있습니까 ?? 왜 maven, leiningen 등과 같은 도구는 의존성을 다운로드하기 위해 별도의 인터넷 연결을해야합니다. 필자는 Maven이 로컬 저장소를 구성하고 어쨌든 전체 인터넷을 다운로드 할 때 종속성을 로컬에서 찾을 수 있어야하지만이 모델이 사용되는 이유는 알고 있습니다. 나는 방화벽 뒤에있어 모든 것이 액세스 가능하지 않고 도구가 종속성을 다운로드하지 못합니다. 나는 같은 상황이 대부분의 작업 환경에 있다고 확신한다.
최근에 나는 clojure로 시작했고, 소년은 clojure로 구성된 일식을 얻는 것이 고통 스러웠습니다. leiningen은 어떤 clojure 개발과 함께 사용해야하는 마술이되어야합니다. 때로는 배우기의 개념을 배우는 것보다 라이온이 더 중요하다는 것을 느낀다. 나는 '자체 설치'가 나를 위해 작동하지 않았기 때문에 leiningen을 위해 'standalone'jar 파일을 다운로드했다. 그러나 그것은 나를 속였습니다. 마자 'lein'명령을 실행하자마자 인터넷에 연결되어 있고 다운로드를하려고합니다. 왜? 그것은 심지어 인터넷에 연결하지 않고 도움말 메뉴를 인쇄하지 않을 것입니다. 왜? 인터넷 방화벽을 우회하지 않고도 그 요구를 충족시킬 수있는 방법이 없습니다. 알고 싶지 않습니다. 아무도이 사람이 원하는 모든 것을 말해 줄 수는 없습니다. 다른 방법은 없습니다.
그리고 모든 사람이 자신의 것을 발명 한 것으로 보입니다. 자바는 단순한 개미를 가지고 있었고, Maven에 갔었습니다. 어떤 프로젝트는 Ruby 기반 빌더를 사용했고, Clojure는 leiningen을 사용했고, Scala는 sbt를 사용했습니다. 가서 뭔가 다른게있어. 왜? 왜 우리는 이미 복잡성으로 가득 찬 세계에서 이러한 복잡성을 추가로 필요로 하는가. 왜 단 하나의 도구가 없는가?
자바 기술 전문가 모두 내 호언 장담하시기 바랍니다. 나는이 질문이 downvoted되고 물건을 이해하기에 충분히 열심히 노력하고 있지 않은 누군가로부터 닫혀있을 것이라고 확신한다. 그러나 나는이 불필요한 복잡성과 싸우는 데 충분한 시간을 보냈다는 것을 믿어주십시오.
다른 사람들이이 문제를 어떻게 해결하는지 알고 싶거나이 문제에 직면 한 유일한 불행한 사람 일뿐입니다.
"나는이 문제가 충분히 이해 될 수 있도록 열심히 노력하고 있지 않은 사람에게서 내려진 것처럼 닫힙니다."라고 확신합니다. 우리는 구체적인 질문에 답합니다. 나는 그것이 괴롭다 고 확신하지만, 당신은 답을 얻을 기회를 가질 수있는 무언가로 당신의 질문을 구체화 할 필요가 있습니다. 이것은 할 수 없습니다. – Dmitry
질문은 복잡한 종속성 관리가 필요한 이유이며 이러한 문제에 직면 한 유일한 이유는 무엇입니까? 다른 사람들이 이러한 쟁점에 직면하고 있다면, 이것에 관해서 뭔가 할 수 있을까요? 귀하의 의견에 감사드립니다. – weima
무언가에 대해 할 수있는 많은 문제가 있지만 뭔가를하기에는 너무 많은 문제가 있습니다. 예를 들어, C++은을 포함하지 않고 std :: cout << string을 시도하면 가비지를냅니다. 다시 말하지만, 이것은 더 철학적 인 질문이며, 복잡성은 여기에 있습니다. –
Dmitry