파이썬은 어떤 유형의 응용 프로그램에 적합하지 않습니까? [닫은]


21

방금 파이썬을 배우기 시작했고 언어에 대해 더 많은 정보를 얻고 싶습니다.

많은 경우 파이썬은 C 또는 C ++에 비해 느린 언어라는 것을 알고 있습니다. 따라서 가능한 빨리 실행해야하는 응용 프로그램에는 Python이 최선의 선택이 아닐 수 있습니다.

이 외에도 파이썬은 읽고 쓰는 것이 쉬운 훌륭한 범용 언어 인 것 같습니다. 사용 가능한 라이브러리는 엄청난 양의 기능을 제공합니다. 성능이 중요한 응용 프로그램 이외의 곳에서 Python을 사용하는 것이 좋지 않은 이유는 무엇입니까?


8
훌륭한 범용 언어는 없습니다. 5 년마다 틈새 시장에서만 살아남는 오래된 것이 새로운 것을 대체합니다. Lisp, Fortran, Pascal, Basic, Ada, Perl ...
mouviciel

3
@mouviciel : 파스칼 틈새 언어? 좋아, 그 이름은 Borland / CodeGear / Embarcadero IDE와 일치하도록 Delphi로 바뀌었지만 델파이는 여전히 파스칼을 기반으로하고 있으며 시장 점유율을 잃어 버렸지 만 정확하게 틈새 언어라고 부르지는 않습니다. 그리고 그 문제에 대한 기본 사항도 없습니다. Visual Basic은 여전히 ​​Basic입니다. 델파이와 비쥬얼 베이직은 많은 회사에서 사용됩니다.
Marjan Venema

7
"Python은 C 또는 C ++에 비해 느린 언어입니다". 사용한 특정 벤치 마크로이를 백업해야합니다. 일부 경우 (많은 시스템 호출을 수행하는 I / O 바운드 프로그램) Python은 C 라이브러리의 래퍼 일 뿐이므로 C만큼 빠릅니다.
S.Lott

@ S.Lott True, PyPy는 때때로 JVM 또는 C / C ++와 경쟁 할 수 있습니다.
yati sagade

파스칼은 제가 대학에있을 때 선택한 교수 언어였습니다. 그리고 수십 년이 지난 지금은 그녀의 자바 인 것 같습니다. 나는 여러 언어를 전문적으로 (십여 개 정도) 코딩하지만 여전히 재미를 위해 Delphi를 코딩합니다.
Mawg

답변:


22

제한된 리소스로 임베디드 대상을 목표로하는 소프트웨어. 이 행성의 대부분의 프로세서는 리소스가 부족하여 Python을 실행할 수 없거나 아무도 해당 아키텍처로 버전을 이식하지 않았습니다. 현재 대부분의 프로세서에는 메가 바이트 미만의 메모리가 제공됩니다.


... 누군가가 Arduino의 Python 포트를 만들 때까지입니다. 아 잠깐만!
Spoike

5
@Spoike 해당 링크는 실제로 컴퓨터에서 파이썬을 실행하고 arduino와 직렬 통신 만합니다. Arduino는 파이썬 코드를 실행하지 않습니다
basarat

1
@ BasaratAli : 면책 조항-나는 jest에 내 의견을 썼습니다. ;-)
Spoike

14

떠오르는 두 곳은 Erlang을 사용하기 위해 많은 동시성이 필요한 것입니다. 또는 Fortran을 사용하려고하는 헤비 듀티 숫자 계산.


1
Fortran은 여전히 ​​수치 계산에서 C / C ++보다 앞서 있습니까? ...
Sardathrion-Reinstate Monica

1
내가 몰라 그것은 내가 많은 경험을 가지고있는 영역이 아닙니다. 그러나 나는 포트란 사람들이 도구를 정말 빠르게 만드는 데 30 년 이상을 보냈다는 것을 알고 있습니다.
Zachary K

@Sardathrion-말하기 어렵습니다. 자연 스럽지만 이해합니다. 그러나 몇 달 전 인텔 포트란 명성의 리오넬은 포트란 라인이 개발 라인에서 다른 모든 제품을 능가한다고 밝혔다.
Rook

@Idigas : 실제로, 포트란이 광범위하게 사용되지만 최적화 제약이 아닌 레거시 코드 때문일 수 있습니다. 어쩌면 나는 그것을 질문으로해야합니다 ...
Sardathrion-Reinstate Monica

또한 수치 계산을하는 많은 사람들이 Fortran을 정말 잘 알고 있으며 그것이 그들의 선택 도구라는 것을 기억하십시오. 그들이 그런 종류의 일을해야 할 때, 그들은 포트란에 도달 할 것입니다.
Zachary K

8

Python은 컴파일 타임 검사없이 동적으로 유형이 지정된 언어이므로 광범위한 단위 테스트가없는 대규모 Python 프로젝트를 리팩토링하기가 어렵습니다.

따라서 오랫동안 유지 관리 및 수정해야하는 대규모 프로젝트가 있고 팀이 모든 것에 대한 자동화 된 테스트를 작성하지 않으면 Java 또는 C #을 사용하는 것이 좋습니다.


17
단위 테스트없이 대규모 프로젝트를 리팩토링하는 것은 매우 어렵습니다.
Sardathrion-복원 Monica Monica

9
유형 안전 없이는 정확하지만 훨씬 더 어렵습니다.
Eric Wilson

3
@Eric Wilson-그럼에도 불구하고 강력한 타이핑은 잘못된 보안 감각을 줄 수 있습니다 ... 컴파일하고 배송합니다!
마크 부스

2
이것은 질문 주제에서 100 %가 아니지만 여전히 유효한 요점입니다. 동적 유형 언어에 대한 툴링 지원, 특히 리팩토링은 Java 또는 C #과 같은 언어에 비해 부족합니다. 거대한 파이썬 프로젝트에서 물건의 이름을 바꾸는 것은 철저한 연습이 될 수 있습니다.
OliverS

파이썬은 별도의 런타임 또는 VM을 필요로합니까, 아니면 독립적 인 단일 실행 파일을 생성 할 수 있습니까?
Jim In Texas

2

주요 초점이 Windows GUI 개발 인 경우, .Net을 사용하는 것과 비교할 때 좋은 양식 디자이너가 부족하기 때문에 CPython에 반대하는 것이 좋습니다.

그러나 IronPython은 .Net에서 실행되며 양식 디자이너가있는 Visual Studio와 SharpDevelop의 두 가지 IDE가 있습니다. 실제로 Visual Studio 용 Python Tools는 CPython과 IronPython에 사용할 수 있습니다. 아직 시도하지는 않았지만 매우 깔끔합니다 ...


2

이것은 실제로 "나쁜 선택"의 의미에 달려 있습니다.

파이썬을 사용하는 것이 매우 어려운 응용 프로그램을 의미하는 경우 상대적으로 적은 수가 있습니다. 중요하고 아직 언급되지 않은 주요 유형은 정교한 유형 시스템 (Haskell, 종속 유형 언어)의 언어에서 높은 수준의 정확성을 요구하는 코드입니다 )가 더 나은 옵션입니다.

파이썬이 차선책 인 응용 프로그램을 의미한다면 (즉, 더 나은 선택이 있습니다) 더 많지만 주관적입니다. 예를 들어, 필자의 제한된 경험에서 컴파일러와 인터프리터 작업은 Python보다 대수 데이터 유형, 패턴 일치 및 더 많은 기능을 사용하는 것이 훨씬 쉽습니다. 그러나 이와 같은 애플리케이션을 철저히 나열하는 것은 개인마다 다르므로 불가능합니다.


2

표현 능력과 다양한 지원 라이브러리로 인해 무언가를 빠르게 스크립팅하는 데 이상적입니다.

동적 유형 검사 및 명시 적 변수 선언의 부재로 인해 수십만 줄 또는 수백만 줄의 코드가 포함 된 대규모 프로젝트에는 적합하지 않습니다. 미션 크리티컬 또는 안전 크리티컬 시스템에서도 마찬가지입니다. 예를 들어 항공 전자 시스템에서 컴파일 타임에 잡힐 수있는 오류로 인해 시스템이 실패하는 것은 완전히 허용되지 않습니다.


0

글쎄, 당신처럼, 나는 또한 파이썬으로 시작하고 있습니다. 그러나 기계 학습 및 데이터 과학의 맥락에서 저에게있어.

또한 Java 8 및 새로운 스트림 지향 라이브러리에 대한 모든 새로운 지식을 얻었습니다.

새로운 Java 8 스트림 라이브러리의 유동적 인 느낌과 Apache 스파크 라이브러리로 인해 얼마나 가깝게 느껴지는 지 정말 좋아했습니다. 파이썬에 들어갔을 때 나는 더 똑같은 것을 기대했습니다.

나는 더 많이 보았다. 그러나 훨씬 적습니다. 문서가 많았지 만 문서가 많지 않았습니다. 유동성이없고, 사실, 방법이 새로운 물체를 지배하고 있는지, 아니면 이것에 작용하는지 추측 할 수 없었습니다. 지도 / 축소 등에 가까이에 아무것도 없습니다. 나는 실망한 것에 놀랐습니다.

그러나 처음부터 언어를 배우는 것이 얼마나 쉬운 지에 대한 큰 기대는 없었습니다. 나는 옳은 것으로 밝혀졌다 : 일관성이없고, 직관적이지 않고 배우기 어렵다. 그러나 그것은 Java와 같은 모든 것에 꽤 좋은 경험이었습니다.

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