인기없는 언어로 개발할 때 발생하는 문제 (예 : 유지 관리)


31

팀에서 clojure (lisp)만으로 일부 응용 프로그램을 개발 중입니다. 작은 응용 프로그램으로 시작합니다. 문제 없어. 그러나 기능을 갖추고 영역을 확장함에 따라 중요한 프로그램이되고 있습니다.

유지 보수 또는 무언가가 걱정되었습니다. 우리 팀의 어느 누구도 클로저 나 리스프를 모르거나 그와 같은 언어에 관심이 없습니다.

그렇다면 인기가없는 언어로 프로그래밍하는 것이 잘못이 아닙니까? (나만의 재미를 위해?) 더 인기있는 언어를 사용해야합니까? (적어도 파이썬과 같은)

내가 떠난다 고 말하지 않고 팀을 떠날 것입니다. :)-아무도 그것을 유지하지 않을 것입니다. 이 프로그램은 파괴 될 것이고 일부는 다른 언어로 발전 할 것입니다.

클로저와 함께 개발하는 것을 매우 좋아합니다. 팀에 적합하지 않을 수도 있습니다.

이것에 대해 어떻게 생각하십니까? 인기없는 언어를 좋아하는 많은 프로그래머들이 비슷한 문제에 대해 생각하고 있습니다.


2
로컬 개발을위한 언어 사용에 관한 로컬 프로그래밍 표준이 없습니까?
temptar

아니요, 그러한 표준은 없습니다. 나는 방금 상사에게 말했고 아무런 언급없이 받아 들여졌다. 상사는 내 결정을 존중하고 허락했다고 생각합니다.
Hybrid

12
"인기"는 큰 문제가 아닙니다. "지원되지 않음"이 훨씬 더 나쁩니다. 예를 들어 Lisp는 VB 6.0 핸드를 이겼습니다.
MSalters

1
앱이 매우 중요한 경우, 자신이하는 일을 아는 사람으로 대체됩니다. 현재 팀이 제한되어 있다고해서이 언어를 아는 사람을 찾을 수 없다는 의미는 아닙니다.
JeffO

답변:


22

나는 당신의 고통을 느끼고, 함수형 프로그래밍에서 더 많은 코딩을하고 싶습니다 (Haskell은 너무 재미있어 보입니다!). 아직 비즈니스 환경에서 사용하지 않았기 때문에 표면을 긁은 것 같습니다.

그래도 그렇게하지 말 것을 강력히 권합니다 . 당신이 아는 언어로만 프로그램을한다면 당신 만이 그것을 지원할 수있을 것입니다. 모든 지원 문제 (다른 마감일 / 우선 순위가있는 경우에도)를 처리하지 않으려는 경우 팀이 알고 지원할 수있는 언어로 코딩하십시오. 휴일에 무언가가 깨지면 어떻게 되나요? 승진하고 싶다면 어떻게됩니까?

적어도 한 명의 다른 팀원을 데려가는 것이 좋습니다. 멋진 언어 기능을 보여주세요. 두 사람이 탑승하면 작업이 가능해지며 모든 지원이 제공되지는 않습니다.


8
동의하지 않아야합니다. 다른 언어가 해당 작업에 적합한 도구 인 경우 사용하십시오. 현대 소프트웨어 개발에서 많은 부수적 인 복잡성은 프로그래머가 전체 응용 프로그램을 하나의 언어에 맞도록 강요함으로써 발생합니다. 예를 들어, 언어의 동시성이 좋지 않으면 다른 언어를 사용하여 메시지 전달을 처리하는 것이 적절할 수 있습니다.
Quancle

@quanticle OP는 "따라서 인기없는 언어로 프로그래밍하는 것은 잘못이 아닙니까? (나만의 재미를 위해)?" 동시성과 같은 다른 언어를 사용하는 강력한 사례가 있다면 지원 문제의 가치가 있음에 동의합니다.
Tom Squires

1
@quanticle : 그 반대가 사실이다 : 너무 많은 언어들 (즉, 하나 이상의 언어)은 중복성, 중복 노력 및 불필요하게 바퀴를 재발 명하게한다.
ThomasX 2019

지원은 확실히 중요합니다. 다른 팀원을 선임하는 제안을 좋아합니다. 나는 그런 식으로 깊이 생각할 것입니다.
Hybrid

17

내가 떠난다 고 말하지 않고 팀을 떠날 것입니다. :)-아무도 그것을 유지하지 않을 것입니다.

아마 거짓.

프로그램에 가치가 있고 경영진이 가치를 인식하면 Clojure를 배우고 유지 관리하는 사람에게 업무를 수행하게됩니다.

항상 일어난다.

이 프로그램은 파괴 될 것이고 일부는 다른 언어로 발전 할 것입니다.

항상 그렇습니다. 왜 걱정 되세요?

모든 프로그램은 결국 교체해야합니다.


Clojure는 하이브리드의 동료 중 누구도 주류 언어로 소스의 (아마도 못생긴) 번역을 얻는 클로저를 사용하지 않더라도 JVM, CLR 또는 Javascript 중 하나에서 실행되기 때문에 가능합니다. 전자의 경우 바이트 코드 / msil에 반영하여 후자의 경우 js를 직접 캡처하여 캡처합니다.
Dan Neely

2
@DanNeely-유효한 유지 관리 경로가 (매우 멋진) 자체 프로젝트 프로젝트를 통해 Clojure를 IL로 컴파일 한 다음 해당 코드를 C #으로 디 컴파일한다고 생각하십니까? 나는 누군가에게 언어를 배우도록 요청하는 것보다 쉬운 것이 아니라고 확신합니다.

@TheMouthofaCow 저는 특히 더 큰 응용 프로그램의 경우 Clojure를 배우는 것이 더 쉬울 것이라고 생각합니다. 그러나 큰 망치 접근 방식은 완고한 단일 언어 언어 프로그래머가 완전히 다시 쓰지 않고도 수정할 수있게 해줍니다. 리플렉션 부스러기를 제거하기 위해 결국 리팩토링하면 사실상 재 작성이 발생할 수 있습니다. 그러나 첫 번째 새 기능을 추가하기 전에 비용을 모두 수정하지 않고 여러 가지 수정 작업으로 비용을 분산시킵니다.
Dan Neely

고맙습니다. 내 마음에 매우 도움이됩니다. 어떻게 든이 상황을 겪으면서 그런 낙관적 인 생각도 생각할 수있었습니다.
Hybrid

1
" 모든 프로그램은 결국 교체되어야합니다. "아, 맞습니다. 디스크 스토리지가 엄청나게 비쌀 때 다시 작성되어 Y2K (Y2K를 기억하십니까?)를 살아 남기 위해 패치 된 COBOL 코드가 많이 있으며 여전히 실행 중입니다. 실제로 대부분의 프로그램은 젊음으로 젊어 지거나 본질적으로 영원히 살 수 있습니다. 따라서 기술 선택은 실제로 매우 중요합니다. 자손이 이러한 프로그램을 유지 관리하고있을 수 있기 때문입니다.
로스 패터슨 1

10

나는 당신이 계승자가 계신 것을 정확히 파악하고 있습니다. Clojure와 Erlang을 사용하여 비동기 검색을 수행하고이를 분산 비동기 검색을 수행하는 프로그램으로 바꾸는 레거시 프로그램에 기능을 추가하는 작업을 맡았습니다. 내가이 직업에 들어 왔을 때, 내가 아는 것은 파이썬과 자바뿐이었습니다.

당신에게 나의 충고 : 직업을위한 최고의 도구를 사용하십시오 . 해당 도구가 Clojure 인 경우에도 마찬가지입니다. 프로그래밍 언어는 배우기가 어렵지 않습니다. 해당 작업에 적합한 언어로 작성된 잘 작성된 코드는 해당 언어로 설계되지 않은 작업을 시도하는 코드보다 항상 읽기 쉽습니다. 후임자가 엉망인 Java보다 깨끗한 Clojure를 읽는 것이 더 쉽습니다.


5

일부 작업에서 새로운 언어 또는 " 독립 "언어를 채택 하는 것은 프로젝트에서 위험이 높습니다.

시스템의 해당 부분에 문제가 있거나 해당 부분을 해제해야하는 경우 해당 언어에 대한 기술을 배워야하는 프로그래머를 찾아야합니다. 두 경우 모두 시간을 많이 잃었습니다.

경우에 따라이 문제를 사용하여 향후 작업별로 팀의 기술을 향상시키고 다양화할 수 있습니다.


클로저에서 발전하고있는 장점 중 하나가 팀에 영향을 미친다는 데 동의합니다. 또한 이것이 위험성이 높다는 데 동의합니다. 조심해야합니다. 고맙습니다.
Hybrid

4

Clojure는 현재 작은 설치 기반을 가지고 있을지 모르지만 (2007 년에 등장) 거의 인기가 없습니다. 실제로 "가장 인기있는"새로운 언어 일 것입니다. 배우는 데 관심이있는 다른 사람들을 찾지 못하면 놀랐습니다.

어쨌든 새로운 언어를 채택할지 여부는 항상 비즈니스 가치에 기반한 결정 이어야합니다 . 다음 줄을 따라 관리자와상의 할 수 있습니다.

Clojure 채택의 장점 :

  • 적은 시간과 적은 코드 줄로 제공되는 유용한 기능의 양에 의해 입증 된 다른 언어보다 생산성이 향상됨
  • Clojure로 작성된 하나의 중요한 응용 프로그램 (귀하의 앱)이 이미 있으므로 값 비싼 재 작성 대신 Clojure 기술을 유지하는 것이 좋습니다.
  • Clojure의 사용은 혁신적인 것으로 보이며 재능있는 개발자가 회사에 합류 / 유지하도록 동기를 부여하는 좋은 방법 일 수 있습니다.

Clojure 채택의 단점

  • 지원할 추가 언어
  • 개발자는 속도를 높이기 위해 더 많은 교육과 시간이 필요할 수 있습니다.

이 결정을 평가하는 관리자라면 Clojure의 생산성 향상이라는 아이디어가 제한적인 실험을 허용하고 팀이 얼마나 잘 수행하고 있는지 분명해질 때까지 결정을 연기하고 싶을 것입니다. 이 경우에는 옹호자가되어야하며, 훌륭한 교사로 행동하고 다른 사람들을 기숙사로 데려 오는 것을 도울 것입니다.


3

걱정 마세요. 행복하세요.

분명히 프로그램에는 가치가 있거나 확장하지 않을 것입니다. 성공적인 프로젝트를 축하합니다. 아마도 당신은 시간을 절약하고 고용주 돈을 절약했기 때문에 Clojure를 선택했을 것입니다. 자바로 작성했다면 프로그램을 유지하기가 훨씬 더 어려울 것입니다. 동료가 프로그램을 한 줄씩 더 쉽게 이해할 수 있다고해도이를 유지 관리하고 확장 할 수 있습니까?


2

나는 당신에게 더 많은 힘을 말할 것입니다! Lisp는 컴퓨터 언어의 할아버지이며 오늘날에도 여전히 관련이 있습니다. 그렇게 인기가 없다는 사실은 C # 및 Java의 따뜻한 솜털 IDE가 없으며 Windows의 주요 컴파일러 구현은 Cygwin (yuk!)에서만 실행되기 때문입니다. 개발은 Emacs에서 발생하는 것으로 보이며 Linux 또는 Mac에서 더 잘 작동한다고 생각합니다.

이 코딩 대회는 2010 년 Lisp 프로그램에 의해 우승했습니다 : http://planetwars.aichallenge.org/

당시에는 약 1 억 마일에서 실시간으로 디버깅 할 수있었습니다. http://www.flownet.com/gat/jpl-lisp.html

유지 보수 적기를 포기하고 있지만 다른 사람에게 학습 기회를 제공한다고 생각하십시오. MUMPS와 같은 악몽 같은 언어 또는 TCL과 같은 지루한 언어를 사용하고 있다면 질문을해야한다고 생각합니다. 그러나 나는 당신이 오래된 전통을 최대한 유지하려고하는 사람으로 생각해야한다고 생각합니다 :)


Tcl은 좋은 언어입니다. 지루하지 않습니다. Tkinter (Python)를 살펴보면 알기 좋은 도구임을 알 수 있습니다.
Francesco

@Francesco-Tcl / Tk가 아니라 Tcl을 말했음을 지적해야합니다. 그래픽 툴킷은 훌륭 할 것입니다. 나는 Tcl을 사용하는 장소에서 몇 년 전 취직 면담을 가졌기 때문에 Tcl이 지루하다고 말했다. Tcl은 지루해 보였다. 나는 그것이 기능적이지 않다고 말하는 것이 아닙니다 (아마도 가능합니다) 며칠 동안 Tcl을 작성해야한다면 팔을 씹게 될 것이라고 생각했습니다. 나는 그 옆에 서 있습니다.

2

좋은 답변이 많이 있지만 요점을 추가하고 싶습니다.

나는 비슷한 상황에 있었지만 언어가 다릅니다. 나는 지침이 없기 때문에 시행 착오 방법을 통해 모든 것을 어려운 방법으로 배워야했습니다. 유지 관리 / 확장 성을 지적하면서 내 경험에서 배운 것은 지침이 없기 때문에 효과적인 접근 방법을 모를 수 있기 때문에 문제가 될 수 있습니다.

앞으로 문제를 피할 수 있도록 관리자에게 적절한 도움을 요청하십시오.

행운을 빕니다!


2

경우에 따라 Lisp와 같은 언어를 사용하면 다른 언어로는 매우 어려운 기능을 더 빠르고 쉽게 구현할 수 있습니다. 또한 문제를 보는 방식에 영향을 미치므로 팀의 다른 사람들에게는없는 관점을 제공합니다. 더 광범위한 기능과 가능한 것에 대한 더 넓은 관점을 갖는 것은이를 이해하고 사용할 수있는 회사에게 매우 가치가 있습니다. 그러나 이러한 기능의 가격은 표준화가 부족합니다.

많은 회사들이 조직적 유연성을 제공하기 때문에 하나 또는 두 개의 언어로 표준화하려고합니다. 관리자는 주어진 프로젝트에 대해 하나의 언어를 사용하는 것의 장점과 단점을 고려할 필요가 없습니다. 당신이 가진 전부 망치라면 모든 것이 못처럼 보입니다.

앞에서 설명한 것처럼 두 가지 방법 모두 특정 이점과 단점이 있습니다. 종종 그렇듯이 옳고 그른 접근법은 없습니다. 당신은 단지 한 세트의 혜택과 단점을 다른 것으로 교환하고 있습니다. 회사는 전적으로 한 방향으로 또는 다른 방향으로 갈 필요가 없습니다. C ++ 또는 Java에서 대부분의 작업을 수행하는 것이 완벽하게 합리적이지만 때때로 Lisp 또는 Python으로 발가락을 찍어 시험 해보고 작동하는지 확인하십시오. 귀사에서하는 일처럼 들릴 것 같습니다.

따라서 (포스는 아님) 계속 진행하고 가능한 많은 것을 배우고 동료가 가지고 있지 않은 통찰력을 관리자가 신뢰할 수있는 Clojure 전문가가 되십시오. 그리고 그것에 대해 기분 나빠하지 마십시오 ... 조직적인 물건에 대한 걱정은 관리자의 일입니다.


1

유지 관리가 문제를 지배 할 가능성이 높다고 느끼기 시작하면 다른 편리한 언어로 프로그램을 다시 작성하는 것이 좋습니다.

클로저로 작성했을 경우 (내가 이해 한 것처럼 앱을 만들 때 알지 못했음) 더 친숙하고 편리한 언어를 사용하여 다시 작성하는 것은 문제가되지 않습니다. 클로저는 완전히 다른 개념을 사용하므로 구현이 다른 언어로 이전하기가 어려울 수 있습니다. 그러나 새로운 앱을 작성하는 데 재미가 있다면 사용했던 개념과 아이디어를 다른 편리한 언어로 옮기는 것이 흥미로울 수 있습니다. 다른 언어와 기능을 비교하는 것이 재미있을 수 있습니다. 귀하의 사례는 그러한 실험에 완벽하다고 생각합니다.


나는 이것을 꽤한다. Perl 또는 Erlang에서 one-shot 유틸리티처럼 보이는 것을 작성하고 유틸리티가 될 정도로 자주 사용되므로 프로젝트의 주요 언어 (Java 또는 C #)를 사용하여 다시 작성합니다.
TMN

1

"인기없는"언어로 프로그래밍하는 것은 분명히 잘못된 일이 아닙니다. 그들이 인기가 있는지 아닌지 왜 실제로 걱정합니까? 나는 이것에 대해 @quanticle에 전적으로 동의합니다. Clojure 또는 다른 비 주류 언어가 해결하려는 문제에 가장 적합한 도구 인 경우이를 선택해야합니다.

유지 보수가 왜 문제가되는지 모르겠습니다. Unit, Integration 등을 적용하면 코드를 테스트하고 문서화 할 수 있습니다. 함수형 프로그래밍에 관심이있는 프로그래머라면 프로그램을 유지할 수 있습니다. IMHO는 동료가 Clojure를 신경 쓰지 않는다는 사실이 존중 해야하는 회사의 정책을 제외하고는 Clojure를 사용하지 않는 것에 대한 좋은 주장이 아닙니다.


0

출발 후 프로그램이 계속되는지 여부는 내 견해로는 당신을 걱정하지 않습니다. 프로그래밍 언어를 사용하여 상사가 좋아하는 것을 만들 수 있습니다. 지속에 대한 걱정은 상사가해야 할 일입니다.


3
지속에 대해 걱정하는 것은 상사의 일입니다. 그러나 상사가 그들이 걱정해야 할 문제를 인식하도록하는 것은 당신의 임무입니다. 당신은 상사와 이야기해야합니다.
MarkJ

사장님이 아무것도하지 않기로 결정하더라도 OP는 걱정하지 않아도됩니다.
Paul Hiemstra

0

튜토리얼 또는 교육 세션을 구성하십시오. 팀원이 전문가처럼 행동하고 싶지 않고 특히 프로그램이 점점 중요 해지고있는 경우 지식을 늘리고 싶지 않은 경우. 최악의 경우 경영진과 대화 할 수 있으며 이런 종류의 교육 세션을 지시 할 수 있습니다. 당신은 바보처럼 보일지 모르지만 적어도 프로그램을 유지 해야하는 유일한 사람은 아닙니다. 다른 옵션은 클로저를 알고있는 두 번째 프로그래머가 팀에 추가되도록 제안하는 것입니다.

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