정적 언어 (예 : C # 또는 Java)와 동적 언어 (예 : Ruby 또는 Python)를 기반으로하는 응용 프로그램을 설계 할 때 아키텍처에 큰 차이가 있습니까?
한 유형에 적합한 디자인 가능성이 다른 유형의 디자인 가능성은 무엇입니까? 디자인과 아키텍처에서 다른 유형과는 다른 유형으로는 얻을 수있는 유용한 기능이 있습니까?
또한 동적 특정 디자인 패턴이 있습니까?
정적 언어 (예 : C # 또는 Java)와 동적 언어 (예 : Ruby 또는 Python)를 기반으로하는 응용 프로그램을 설계 할 때 아키텍처에 큰 차이가 있습니까?
한 유형에 적합한 디자인 가능성이 다른 유형의 디자인 가능성은 무엇입니까? 디자인과 아키텍처에서 다른 유형과는 다른 유형으로는 얻을 수있는 유용한 기능이 있습니까?
또한 동적 특정 디자인 패턴이 있습니까?
답변:
몇 가지 일을 바로 잡자 :
이러한 놀라운 유사점을 제외하고 개발 프로세스에 영향을 미치는 실질적인 차이점이 있습니다.
정적 타이핑 없이는 결코 만들 수 없었던 한 가지 유형의 프로그램 인 Singularity , 하드웨어 프로세스 경계가없는 OS가 있습니다. 코드 계약을 지원하는 소량의 C, 일부 C # 및 Spec #이라는 C #의 방언으로 작성되었습니다.
가비지 수집 언어로 작성 되었지만 모든 프로세스가 하나의 메모리 공간에서 실행되고 공식 검증 최적화로 인해이 OS의 멀티 태스킹 및 프로세스 간 통신 성능은 실제로 다른 것보다 낫 습니다. 위에 언급했듯이. 프로그램이 나머지 시스템을 손상시킬 수 없도록하려면 통신 개체를 정적으로 확인할 수 있어야하기 때문에 정적 입력 없이는이 작업을 수행 할 수 없습니다.
그러나 대부분의 경우 아키텍처는 거의 동일하게 보입니다. 정적 언어는 유형이 잘 정의되어 있기 때문에 대부분의 경우 프로그램을 쉽게 추론 할 수 있지만, 잘 작성된 동적 언어 프로그램에는 최소한 개발자의 마음에 잘 정의 된 유형이 있습니다.
나는이 라인을 따라 생각한 적이 없다. 따라서 Google을 시작했을 때 Peter Norvig의 블로그 는 최고의 인기를 끌었습니다. 일부 디자인 패턴은 C ++과 같은 기존 객체 지향 언어보다 동적 언어로 구현하기 쉽다고 말합니다. 디자인 / 아키텍처에도 차이가 있어야한다고 생각하기 때문에 동적 언어에서는 구현이 더 쉽다는 점에 주목하기 때문입니다. 더 공부하면서 답변에 더 많은 것을 추가하려고 노력할 것입니다.
정적 언어 (예 : C # 또는 Java)와 동적 언어 (예 : Ruby 또는 Python)를 기반으로하는 응용 프로그램을 설계 할 때 아키텍처에 큰 차이가 있습니까?
아니.
동적 언어를위한 멋진 프레임 워크를 작성하는 것이 약간 더 쉽습니다. 그러나 그것은 응용 프로그램이 아닙니다.
한 유형에 적합한 디자인 가능성이 다른 유형의 디자인 가능성은 무엇입니까?
정말이지
어떤 언어로든 좋은 것을 쓸 수 있습니다.
디자인과 아키텍처에서 다른 유형과는 다른 유형으로는 얻을 수있는 유용한 기능이 있습니까?
아니.
차이점은 동적 언어는 "쓰기, 실행, 수정"입니다. 빠르게 실험하고 수정할 수 있습니다.
정적 언어는 "쓰기, 컴파일, 빌드, 실행, 수정"입니다. 당신은 쉽게 실험 할 수 없습니다.
그 외에는 기능면에서 거의 동일합니다.
동적 특정 디자인 패턴이 있습니까?
아마도. 파이썬 eval()
과 execfile()
함수는 어떤 식 으로든 정적 언어에서 다루기가 어렵지만 불가능한 동적 언어 기능을 가리 킵니다. 동일한 프로세스 공간에서 코드를 컴파일하고 실행하려면 훨씬 더 많은 코드 줄이 필요합니다.
동적 언어에 국한되지 않습니다. 더 쉽습니다.