다이나믹 타입 언어는 모든 비판이 필요합니까? [닫은]


35

인터넷에서 프로그래밍 언어 선택에 대한 기사를 몇 개 읽었습니다. 최근에는 루비, 파이썬, PHP, 얼랭과 같은 많은 동적 유형 언어가 널리 사용되었습니다. 그러나 많은 기업에서는 여전히 C, C ++, C # 및 Java와 같은 정적 유형의 언어를 사용합니다.

정적 유형 언어의 이점 중 하나는 프로그래밍 오류가 런타임이 아닌 컴파일 타임에 조기에 발견된다는 것입니다. 그러나 동적 유형 언어에는 장점이 있습니다. ( 위키 백과에 대한 추가 정보 )

기업이 Erlang, Ruby 및 Python과 같은 언어를 사용하지 않는 주된 이유는 동적 유형이라는 사실 인 것 같습니다. 그것은 또한 StackOverflow의 사람들이 Erlang을 반대하는 주된 이유 인 것 같습니다. Erlang "에 대해 왜 결정 했습니까?"를 참조하십시오 .

그러나 기업에서 역동적 인 타이핑에 대해 강한 비판이있는 것처럼 보이지만 왜 그렇게 강력한 지 알 수 없습니다 .

실제로 기업에서 동적 타이핑에 대해 왜 그렇게 많은 비판이 있습니까? 실제로 프로젝트 비용에 많은 영향을 미칩니 까? 하지만 내가 틀렸을 수도 있습니다.


3
타입 유추와 가능한 오리 타이핑을 사용하는 정적 타이핑이 가장 좋은 방법이라고 생각합니다. 그것은 또한 매우 복잡하다
Casebash

2
방금 C #의 오리 타이핑을 보았습니다 (언어를 사용하지 않음). 오리 타이핑의 정의를 완전히 채우는 것처럼 보이지만 필요한 세부 정보가 목적을 어기는 것 같습니다. 그것은 때때로 유용하지 않다고 말하는 것은 아닙니다.
Chinmay Kanchi

3
정적 유형 언어에 비해 동적 유형 언어보다 더 많은 비판이 있습니까? 또한 내 경험상, 큰 "기업"의 언어 / 기술 선택은 실제 기술적 인 장점보다는 현재의 추세 / 안전한 선택에 의해 결정되는 것 같습니다.
MAK

2
@ChinmayKanchi : 자세한 정보? 당신은 무언가를 선언하고 dynamic그것을 사용하기 시작합니다. 일반적인 메소드 호출이나 연산자 오버로드보다 더 자세한 것은 아닙니다.
Joey

4
Graovs 코드의 Groovy에서 현재 회사 디버깅 오류로 낭비한 시간을 계산할 수 없습니다. 컴파일러는 Java를 사용했을 때 즉시 감지했습니다.
WKS

답변:


46

그렇습니다.

새 프로젝트의 언어를 선택할 때 고려해야 할 몇 가지 이유가 있습니다.

  • 런타임 속도. C / C ++ / Fortran과 비교할 때 Perl과 Python은 너무 느리므로 재미 있습니다.
  • 초기화 속도. 빠른 언어 위의 비교, 자바는 ... 전복과 JVM이로드 및로드 및 유지로 울고 while(1)....
  • 프로토 타입 기능. C ++ 또는 Java에 필요한 선언 / 정의 작업 을 철저히 수행하고 수행하면 LOC가 증가합니다. LOC는 버그 수와 안정적으로 상관 되는 유일한 알려진 지표입니다. 시간이 많이 걸립니다. 또한 유형과 연결에 대해 좀 더 생각해야합니다.
  • 내부 신용도. 자체 수정 코드 를 디버깅하기 시작할 때까지 내부를 역동적으로 엉망으로 만드는 것이 좋습니다 . (파이썬, 리스프, 펄)
  • 정확성 검증. 컴파일러는 C ++에서 코드의 반 정확도를 한 번에 빠르게 전달할 수 있으며 이는 정말 좋습니다.
  • 정적 분석 세부 사항. C와 Java는 정적 분석이 매우 좋습니다. Perl은 이론적 인 수준 에서 완전히 정적으로 분석 할 수는 없습니다 (아마도 Python도 가능). 나는 Lisp도 확실하지 않다고 확신한다.
  • 이상한 플랫폼은 일반적으로 C 만 사용합니다.
  • 지원 체인. 당신은 당신이하는 계약을 체결 한 경우 것입니다 당신의 버그를 보았고에 흥분, 그건 거대한 .

당신은 당신이 작업하는 조직은 "앞으로"의 원칙을 가지고 있음을 추정 할 수있는 경우 (이 이것에 대한 회계 용어이다), 그리고 하지 않습니다 단지 무작위로 소프트웨어에없는 일에 결정, 당신은 더 나은 경우에이 소프트웨어 사용. Python / Perl / $ dynamic_language 는 주요 비즈니스 판매 (유지 관리 책임을지는 의미) 가 없기 때문에 위험을 상당히 줄입니다.

필자의 경험에 따르면 오픈 소스 관리자는 종종 버그 수정 및 업데이트 릴리스에 전적으로 책임을지는 문제가 있습니다. "무료입니다, 당신은 그것에 노력하고 있습니다!" (대부분의 핵심 역량이 아닌) 대부분의 비즈니스에 허용되는 답변 이 아닙니다 .

물론, 저는 웹앱 / 스타트 업 세계에 대해 이야기하지 않습니다. 웹앱 / 스타트 업 세계는 위험이 높고 보상 수준이 높으며 기술의 최첨단을 유지하는 데 매우 개방적입니다.


16
"무료입니다, 당신은 그것에 노력하고 있습니다!" <-일반적으로 F / OSS의 가장 큰 문제는 +1이지만 투표권이 없습니다 :(
Billy ONeal

4
좋은 요약입니다. 잘 구성된 유형은 의미 적 의미를 전달합니다 (유형을보고 수행 할 수있는 방법, 사용 방법을 이해할 수 있음). 정확성을 강화하는 데 사용할 수 있습니다 (제한된 종만 받아들이는 유형 만 작성할 수 있음) ), 그리고 오타에서 바보 오류가 발생하지 않습니다 (자동 변수 선언이 싫어)
smithco

4
모든 주요 오픈 소스 프로젝트에 대한 상업적 지원을받을 수 있습니다. 대기업은 큰 부품 (적합한 부품 확인)에 동적 유형 PL을 사용하고, Facebook은 PHP (UI) 및 Erlang (채팅)을 사용하고 Twitter는 Ruby (UI)를 사용하며 Google은 Python (무엇을 알지 못함)을 사용하며 Lisp 및 Python은 많은 정교한 연구 프로젝트에 사용됩니다. 참고 : 저는 C # 개발자이며 (거의) 동적 형식 언어를 사용한 적이 없습니다. 그러나 이러한 점은 상당한 확장에 유효하지 않습니다.
Kaveh Shahbazian

4
나는 당신의 대답을 좋아하지만 Java는 동적으로 입력되지 않습니다 ...
Mehrdad

2
@PaulNathan : 너무 열심히 생각하고 있습니다. 이 질문은 동적으로 유형이 지정된 언어에 대한 질문이며이 답변은 Java가 동적으로 유형이 지정된 것처럼 언급합니다.
Mehrdad

24

엔터프라이즈 의사 결정자에게 너무 많은 기술 크레딧을 제공하고 있습니다. "아무도 IBM을 사기 위해 해고 당하지 않았다"는 옛말이 있습니다. 다른 길로 가고 물건이 흔들리면 (항상 그렇게), 아무도 책임을지고 싶지 않습니다. 표준을 고수하고 다른 사람을 비난하십시오.

미래의 기업이되고 그 언어를 사용할 젊은 회사들이 많이 있습니다.

그리고 VBA로 작성된 버그가있는 코드 줄을 잊지 마십시오!


1
"... 내일의 기업은 그 언어를 사용할 것입니다"+1
rdmueller

6
"내일의 기업이되고 그 언어를 사용하게 될 젊은 회사가 많이 있습니다." 반면, 동적 언어는 이미 오랫동안 존재 해 왔습니다.
Giorgio

17

기업이 C, C ++, C # 및 Java를 사용하는 이유는 정적 형식 (적어도 직접적이지 않음)이기 때문이 아닙니다. 엔터프라이즈 의사 결정권자들은 유형 시스템의 객관적인 비교를 기반으로 이러한 종류의 선택을하지 않습니다.

기업 은 다음에 관심을 갖습니다.

  • 장기 유지 보수 비용 : 10 년 후에도 계속 잘 작동 할 것으로 기대할 수 있습니까? 언어 진화가 보수적이고 역 호환 적이라면 (Java와 마찬가지로) 실제로 좋습니다. 정적 타이핑은 컴파일 타임에 프로덕션 시스템에 들어가기 전에 주요 유형의 버그를 포착하기 때문에 여기에서 유용합니다.
  • 인재 가용성 -반짝이는 새로운 시스템을 유지할 개발자를 찾을 수 있습니까? 원래 개발자가 떠나면 다른 사람들이 코드를 이해합니까? 이것은 "새로운"언어를 도입하는 데 큰 장애물이됩니다 (특히 배포, 빌드 시스템, 운영 지원 등에 대한 새로운 요구 사항을 생성하는 경우). 이는 널리 사용되는 언어 (C, C ++, C # 및 Java)에 큰 이점을 제공합니다.
  • 통합 비용 : 이미 보유하고 있거나 획득 할 가능성이있는 다른 기술과 쉽게 연결 / 통합 할 수 있습니까? 레거시 J2EE 시스템 스택이 이미있는 경우 해당 시스템과 통합해야합니다. 새로운 Java EE 솔루션은 예를 들어 Python보다 훨씬 실용적입니다.
  • Predicatability / low risk : 플랫폼 / 언어가 입증되었으며 작동하는지 확신 할 수 있습니까? 이것은 일반적으로 단순한 생산성보다 중요합니다. 관리자가 상사에게 설득하여 나중에 새로운 시스템을 구축하기위한 인력을위한 예산을 크게 마련하는 것이 훨씬 쉬워졌다.
  • 엔터프라이즈 지원 / 지원 -주요 국제 조직이 언어 및 플랫폼을 지원하기 위해 노력하고 있습니까? 문제가 생겼을 때 누군가에게 전화를 걸 수 있도록 저를 지원하기 위해 계약서에 서명합니까?
  • 공급 업체 중립성 / 플랫폼 독립성 -단일 공급 업체에 구속됩니까? 또는 광범위한 미래의 공급 업체 옵션 / 전환 경로가 있습니까? 경쟁자가 점심을 먹는 동안 진행 상황을 막을 수있는 건축적인 막 다른 골목에 갇히고 싶지 않습니다. 엔터프라이즈 아키텍트로서 일을 제대로하고 있다면 최소한 5-10 년 전에이 일을 생각해야합니다.

개인적으로 엔터 프라이즈에서 동적 언어를 사용하려는 경우 기존 엔터프라이즈 생태계에서 피기 백하는 것을 사용하는 것이 가장 좋습니다. 가장 주목할만한 것은 새로운 동적 JVM 언어입니다 (예 : JRuby, Groovy, Clojure). IT 관리에 관한 한, 이것들은 "안전한"동적 언어 선택입니다. 다른 Java 엔터프라이즈 생태계 내에서 작동하고 훌륭하게 작동하기 때문입니다.


1
아직 아무도 당신의 대답을 믿지 못했습니다.
Sebastian N.

11

기업이 Erlang, Ruby 및 Python과 같은 언어를 사용하지 않는 주된 이유는 동적 유형이라는 사실 인 것 같습니다.

나는 이것이 그들의 주된 변명 일 뿐이라고 생각한다. 진정한 이유는 비즈니스가 실제로 모든 것을 진지하게 받아들이지 않고 아마도 너무 아마추어 적이라고 생각하기 때문입니다. Java와 .NET은“큰 사업체 이름”이며, 상업적 마케팅, 상업 고객 지원이 우수하여 매우 심각하게 받아 들여지고 있습니다.

불행히도 대기업 이름만큼이나 대중적으로 정적 인 유형의 언어가 실제로 존재하지 않는다는 것은 유감입니다. 오픈 소스 / 자유 소프트웨어 프로그래밍 환경이 거의 항상 동적으로 입력되는 이유는 무엇입니까? 이것은 정적으로 유형이 지정된 언어가 실제로 그렇게 쉬운 것은 아니며, 동적 타이핑은 "게으른 사람의 핵"이라는 것을 나타낼 수 있습니다. 이 경우 동적 유형 언어에 대해 결정하는 비즈니스는 실제로 중요한 점이있을 수 있습니다.


8
정말? 마지막으로, Google은 Python 제작자를 고용하고 언어 작업에 50 %의 시간을 할애하는 것을 포함하여 Python에 대해 많은 무게와 상당한 개발 노력을 기울였습니다. 구글은 또한 많은 양의 코드를 파이썬에 기여하고 있으며, 특히 언로드-삼키기가 파이썬 3 소스 트리에 병합되었습니다. 그것은 파이썬을 "큰 사업명"으로 만듭니다.
Chinmay Kanchi

13
@Chinmay Kanchi : 표본 크기가 1 인 통계에서 결론을 도출하는 방법에 흥미가 있습니다.
Timwi

6
터치 그러나 일부 결론에도 결함이 있습니다. 정적 언어를 구현하는 것보다 동적 언어를 올바르게 구현하는 것이 훨씬 어렵습니다. 동적 입력은 확실히 하지 당신이 그것을 넣어 같이 "게으른 사람의 해킹". 그것은 개발자가 게으르지 만 컴파일러 / 통역사를 쓰는 사람은 할 수 없습니다. 실제로 동적으로 유형이 지정된 언어를 최적화하는 것은 너무 어렵 기 때문에 최근에 다른 언어 (Python, PHP)에 대한 최적화 / JITting 프로젝트가 있지만 최근 에이 처리를 광범위하게받은 (JavaScript) 한 언어 만 생각할 수 있습니다.
Chinmay Kanchi

2
또한 동적 유형 언어가 오픈 소스 환경에서 가장 일반적으로 사용된다고 생각하면 이는 분명하지 않습니다. 선택한 측정 항목에 따라 사실 일 수도 있지만 그렇지 않은 경우가 많습니다. 코드 줄을 측정하면 C가 롱 샷으로 승리합니다. 다국어를 포함하여 오픈 소스 프로젝트에서 사용되는 언어를 측정 할 때 가장 많이 사용되는 언어는 JavaScript, C, C ++ 및 PHP 순서입니다. 기본 언어 만 측정하는 경우 가장 널리 사용되는 언어는 Perl, Java, C # 및 JavaScript입니다. bit.ly/C6xTB
Chinmay Kanchi

7
물론 동적 타입 언어에 대한 옵티 마이저 를 작성하는 것은 어렵지만 통역사는 아닙니다. 모든 타입 검사를 없애고 나머지는 동일합니다. 아마추어 언어 제작자는 최적화 프로그램 작성을 생각하지 않습니다. — 마지막 부분과 관련하여 필자는 대부분의 오픈 소스 소프트웨어가 동적 유형의 프로그래밍 언어로 작성되었다는 것을 의미하는 것이 아니라 대부분의 오픈 소스 프로그래밍 언어 ( 즉, “환경”이라고 말했습니다. 컴파일러 / 인터프리터, IDE 등)는 동적으로 형식화됩니다.
Timwi

9
  • 동적 유형 언어는 정적 유형 사촌보다 속도가 느린 경향이 있습니다.
  • 오류를 잡기가 더 어렵고 디버깅하기가 더 어려울 수 있습니다
  • 컴파일러 / 통역사는 할 수있는 것과 할 수없는 것에 대해 덜 까다로운 경향이 있습니다. 즉, 컴파일 단계에서 구문 오류 만 잡습니다.
  • 동적으로 유형이 지정된 언어의 디자인에 매우주의를 기울이지 않으면 코드 냄새 언어 인 Javascript로 끝 납니다.

편집 : 나는 현재 주요 프로그래밍 언어가 동적으로 입력되는 Python이라고 언급해야합니다. 개인적으로, 나는 변수-선언 미리하지 않아도와 함께 제공되는 자유를 사랑하지만, 시간에, 그것은 것입니다 좋은 종류 매개 변수의 함수 후반보다 초반 오히려 캐치 오류에 무엇이 (예를 들어)을 지정합니다.


1
컴파일러가 까다 롭지 않다는 것이 사실이지만 통역사는 일반적입니다. 대부분의 경우 인터프리터는 문제가있는 상황을 감지하고 오류를 표시합니다.
Winston Ewert

17
나는 동적 입력을 사랑하지만 나는 싫어 미리 선언 변수를 가지고 있지! 그래서 여러 번 변수 이름의 철자가 틀 렸기 때문에 실수로 새 변수를 소개했습니다.
Frank Shearar

1
@ Frank : 나는 Perl이 변수 선언을 강요하는 설정을 가지고 있다는 것을 인쇄 할 수 없을 정도로 좋아 합니다. 내 생각에 그것은 Perl의 장점 중 하나입니다.
Paul Nathan

8

동적으로 입력 된 언어는 (일부 프로그래머 / 보스에 의해) 잘 작동하지 않는 코드를 생성하도록 인식됩니다. 동적으로 형식이 지정된 프로그램이 컴파일된다는 사실은 그 정확성에 대해 거의 알려주지 않습니다. 정적으로 입력 된 언어가 컴파일된다는 사실은 더 많은 것을 말해줍니다. (반면에, 컴파일 사이에는 여전히 먼 길이 있고 올바른 일을하므로, 이것은 덜 의미가있는 것 같습니다)

동적으로 입력 된 언어는 스크립팅 언어로 인식됩니다. bash 또는 배치 파일로 응용 프로그램을 작성하지 마십시오. 동적으로 유형이 지정된 모든 언어는 (부당하게) 해당 범주로 반복되는 경향이 있습니다.

동적 유형 언어는 정적 유형 언어보다 느립니다. (그러나 우리는 JIT 변경에 얼마나 잘 작동하는지 볼 것입니다)


2
일부 프로그래머 는 "인식하고 있습니다" . 동적 타이핑에 대해 프로그래머와 논쟁을 할 때, 그들은 실제로 실제로 그런 종류의 언어를 사용한 적이 없다는 것을 인정합니다 .
Frank Shearar

1
@ 프랭크 당신은 동적 타이핑의 열등 성을 주장하는 사람들이 일반적으로 그것을 사용하지 않았다고 말하고 있습니까?
Winston Ewert

2
@ Frank : 나는 그런 종류의 언어를 사용했으며, 그 결과 대부분은 유지할 수없는 혼란이었습니다. (공평하게
말하면

@ 빌리 : 나는 이것이 일반적이라고 생각합니다. VB에 대한 경험 때문에 몇 년 동안 동적 타이핑을 중단했습니다. 결국 동적 타이핑에 대한 끔찍하고 정신 분열증적인 구현이 일반적이지 않다는 것을 깨달았을 때 제 의견은 크게 바뀌 었습니다.
Shog9

@ 윈스턴 : 나는 내가 주장 한 사람들이하지 않았다고 말하고있다. 저에게는 "동적 타이핑이 작동하지 않을 수 있습니다"라는 사례가 있었지만, 동적 언어 (IDE, 리팩토링, 머릿결 맨 처음)에서 처음 개발 된 많은 기술을 행복하게 사용할 것입니다. 또한 다음과 같은 질문 : stackoverflow.com/questions/2317579 는 아마도 보편적이지는 않지만, 작동 할 수는 없지만 I-haven't-tried 프로그래머와 논쟁하는 것은 고립되지 않았다는 것을 나타냅니다. (저는 두 가지 방법 모두 가치가 있다고 생각합니다.)
Frank Shearar

8

참고 : 이것은 주로 주관적이며 내 경험과 인상에 근거합니다.

동적 유형 언어는 정적 유형 언어와 매우 다릅니다. 이러한 차이는 대부분의 다른 응용 프로그램보다 헤비급 엔터프라이즈 소프트웨어에서 더 중요해집니다.

정적으로 입력 된 언어는 매우 규범적인 경향이 있습니다. 메소드는 서명과 정확히 일치하는 입력 만받습니다. 액세스 수준은 매우 중요한 경향이 있으며 인터페이스는 명확하지만 명확하게 정의되어 있으며 이러한 정의를 시행하기위한 자세한 제한 사항이 있습니다.

반면에 동적으로 입력 된 언어는 매우 실용적입니다. 유형 변환은 종종 암시 적으로 발생하며, 충분히 유사한 동작을하는 한 잘못된 유형의 입력을 제공하면 함수가 작동 할 수도 있습니다. 파이썬과 같은 언어에서는 액세스 수준조차 기술적 인 제한이 아닌 계약을 기반으로합니다. 즉, private사용하지 말라고 말하고 재미있는 이름을 가지고 있기 때문입니다.

많은 프로그래머들은 역동적 인 언어를 선호합니다. 코드는 종종 형식 선언이 없기 때문에 짧아지고 빠르고 더러운 솔루션이 필요하거나 무언가를 테스트하기 위해 적절한 프로토콜을 위반하려는 경우 쉽게 가능합니다.

"기업가"회사가 정적으로 유형이 지정된 언어를 선호하는 이유는 이러한 제한에 대해보다 제한적이고 명확하기 때문입니다. 실제로는 정적 형식의 코드조차도 컴파일러를 사용하는 바보에 의해 깨질 수 있지만 많은 문제가 프로세스 초기에 (즉, 런타임 전에) 훨씬 더 많이 보입니다. 즉, 코드베이스가 크고 모 놀리 식이며 복잡한 경우에도 코드를 실행하거나 QA 부서로 보내지 않고도 많은 오류를 쉽게 포착 할 수 있습니다.

이점이 해당 환경 외부의 많은 프로그래머에게는 단점보다 중요하지 않은 이유는 이러한 코드가 코드를 철저히 검사하거나 코드를 실행하여 쉽게 잡을 수 있기 때문에 발생하는 오류이기 때문입니다. 특히 테스트 중심의 방법론을 따를 때 이러한 오류는 종종 사소하고 수정하기 쉽습니다. 또한 출시주기가 훨씬 짧은 이러한 많은 회사의 경우 생산성이 강성보다 중요한 경우가 많으며 개발자가 자체적으로 많은 (기본) 테스트를 수행하고 있습니다.

기업체가 동적 유형 언어를 많이 사용하지 않는 또 다른 이유는 레거시 코드입니다. 어리석은 것처럼 보이지만 대기업은 유통 기한이 지난 경우에도 작동하는 솔루션을 고수합니다. 이것이 많은 주요 회사들이 Internet Explorer 6을 시행하고 OS 업그레이드 속도가 너무 느린 이유입니다. 그렇기 때문에 그들은 종종 "오래된"언어 (예 : 고대 버전의 Java)로 새로운 코드를 작성하는 이유도 있습니다. 언어.

tl : dr : 정적 언어는 관료주의처럼 느껴지므로 기업 관리자는 더 좋아합니다.


3
어리석은 끈적 끈적한 타이핑 규칙이있는 언어는 일종의 작업에 잘못 될 수있는 많은 기회를 만듭니다. 예를 들어 JavaScript에서 문자열을 기대하는 숫자를 코드에 전달하면 문자열 숫자가 해당 숫자의 문자열 표현을 전달한 것처럼 보이지만 항상 그런 것은 아닙니다. 예를 들어 456을 123에 추가하려고하면 123456이 생성되지 않지만 대신 579가 생성됩니다.
supercat

1
@ supercat, PHP와 JavaScript는 (문제와 관련하여)이 문제를 처리하는 두 가지 방법에 대한 좋은 예라고 생각합니다. PHP 연산자에서는 모호하지 않습니다- +숫자를 가져 와서 추가하십시오. 연결을 원한다면 사용해야합니다 .. JS에서 두 작업은 동일한 연산자를 공유합니다-값의 동작을 모르는 경우 명시 적으로 변환해야합니다. 물론 이것은 느슨한 타이핑 대 엄격한 타이핑과 관련이 있지만 (Python은 더 엄격합니다) 기본적으로 값이 올바른 유형인지 확인하거나 작업이 예상되는 유형을 강제하도록해야합니다.
Alan Plum

1
PHP에 익숙하지는 않지만 "올바른"접근 방식을 사용하는 것 같습니다. 자바 스크립트는 여러 가지면에서 IMHO를 가증하지만, "+"의 동작이 최악의 것 중 하나라고 생각합니다. 실제로, 난잡한 끈적한 동적 타이핑은 다른 규칙이나 인터페이스 유형의 항목이 특정 규칙을 사용하여 구현 또는 파생 된 것으로 간주되어야한다고 선언 할 수있는 강력한 유형 시스템보다 많은 이점이 있다고 확신하지 않습니다. 클레임의 우선 순위를 지정하는 방법에 대해 내가 현재 구조적으로 구조화 된 프레임 워크에서 알고있는 큰 한계는 ...
supercat

1
... 두 사람이 독립적으로 유사한 인터페이스를 개발하는 경우 타사가 인터페이스를 서로 바꿔 사용할 수있는 코드를 작성할 수있는 방법이 없습니다. 제 3자가 새로운 인터페이스를 정의하고 기존 인터페이스 중 하나 또는 둘 다의 구현이 새로운 인터페이스를 자동 구현해야한다고 선언하면 (필요한 경우 새 인터페이스에 제공된 래퍼를 사용하여) 의미 론적으로 99 %를 처리 할 것이라고 생각합니다. 동적 타이핑에 좋습니다.
supercat

3

아니요, 동적으로 유형이 지정된 언어가 모든 비판을받을 가치가 있다고 생각하지 않습니다. 또는 원하는 경우 정적으로 유형이 지정된 언어만큼 비판을받을 가치가 있습니다.

내 경험상 (그리고 나는이 진술을 일반화하려고 시도하지 않는다), 동적 언어를 비판하는 프로그래머는 그것들을 사용하지 않았다. 대화는 보통 "정적으로 타이핑하면 컴파일러가 너무 많은 오류를 잡아냅니다!" "저의 경험으로는 문제가 아닙니다."라고 말합니다. (일반적으로 다른 프로그래머는 Java, Delphi 또는 이와 유사한 배경을 가지고 있습니다. 나는 Haskell 또는 ML 프로그래머를 모릅니다.)

사람의 주장이 기술 푸 수없는 때 정말 나에게 불만있는 유일한 방법은 아마도 그 기술은 년에 발명되었을 때 의해 동적 입력을 위해, ... 동적 타입 언어에서 할 수 (또는 아주 열심히 할 수있을 수 있습니다) 언어. 십오 일? 잡담. 자동 리팩토링? 잡담. 발신자 / 구현 자? 잡담.


나는 개인적인 자세로 답을 어지럽히고 싶지 않았다. 이것이 올바른 일을위한 올바른 도구이다. 어떤 종류의 언어를 사용하든 다른 종류의 언어보다 일부 작업에 더 적합하고 다른 작업에 더 적합하지 않습니다.
Frank Shearar

6
다른 프로그래머가 Haskell에서 왔을 때, 이미 자바와 동적 언어보다 우수한 언어라는 것을 알고 있습니다.)
Andres F.

0

기업은 새로운 언어와 도구를 충분히 빨리 채택하지 않고 있으며 그럴만한 이유가 있습니다. 그러나 C #과 같은 주류 도구 중 하나가 이러한 기능 중 일부를 구현하면 주류 기업에 간질이됩니다 ....


왜 이것이 다운 피트되었는지는 모르겠지만 통찰력있는 진술입니다. 기업은 느리고 보수적입니다. 사람들은 또한 루비와 같이 갑작스런 변화에 대한 점진적인 변화 (정적 유형의 언어로 동적 타이핑을 사용할 수있는 C #의 동적 키워드와 같은)를 선호합니다.
Vaddadi Kartick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.