크로스 플랫폼 데스크탑 프로그래밍 : C ++ 대 Python [폐쇄]


11

우선, 아마추어 Obj-C / Cocoa와 Ruby w / Rails 프로그래머로서의 경험이 있습니다. 이것들은 훌륭하지만 크로스 플랫폼 응용 프로그램을 작성하는 데 실제로 도움이되지는 않습니다 (GNUStep이 언젠가는 첫 번째 멀티 플랫폼이 될만큼 충분하지만 그 날은 오늘이 아닙니다).

내가 수집 할 수있는 것에서 C ++은 매우 강력하지만 50 년 이상이 걸릴 수있는 거대하고 추악한 거물입니다. 또한 메모리 관리가 모두 수동이기 때문에 발로 자신을 쏠 수있을뿐만 아니라 다리 전체를 날려 버릴 수 있다는 것도 읽었습니다. 분명히 이것은 모두 매우 위협적입니다. 맞습니까?

파이썬은 C ++의 대부분의 힘을 제공하는 것으로 보이며 빠른 비용으로 픽업하는 것이 훨씬 쉽습니다. 이 희생은 얼마나 큰가요? 의미가 있거나 무시할 수 있습니까?

합리적인 시간에 빠르고 안정적이며 신뢰성이 높은 응용 프로그램을 작성해야하는 것은 무엇입니까?

또한 UI에 Qt를 사용하거나 각 플랫폼마다 별도의 기본 프런트 엔드를 유지하는 것이 더 낫습니까?

편집 : 명확성을 높이기 위해 작성하려는 두 가지 유형의 응용 프로그램이 있습니다. 하나는 매우 친숙하고 편리한 데이터베이스 프론트 엔드이고 다른 하나는 나중에 나올 것입니다 .3D 세계 편집기입니다.


당신은 대답이 매우 주관적 일 수있는 질문을하고 있습니다. 또한 하나에 적어도 4 가지 다른 질문을합니다. 어떻게 다른 캔 누구나하지만 당신은 C ++에서 파이썬을 위해 더 나은 선택을 알고 당신 ? 파이썬으로 작은 GUI 응용 프로그램 (하루 이상 걸리지 않아야 함)과 C ++로 동일한 응용 프로그램을 작성하고 직접 비교해보십시오.
Doc Brown

나는 실제로 물어보고 싶은 것이 내가 찾고있는 것을 제공받는 것 같습니다. 객관적 으로 더 나은 선택은 무엇입니까?
John Wells

추가 컨텍스트를 제공 할 수 있습니까? 데스크톱 앱은 무엇을해야합니까? 많은 수학? 생산성 앱? 데이터베이스 액세스? 게임?
JBR 윌킨슨

내가 원하는 것을 명확하게하기 위해 편집을 추가했습니다.
John Wells

동일한 언어의 운영 체제 및 / 또는 GUI 라이브러리를 사용하도록 선택했습니다. UI를 훨씬 더 심도있게 조작 할 수 있습니다. Java 또는 C #과 같은 고급 언어로 전체 화면처럼 간단한 것을 시뮬레이션 해보십시오 (브라우저에서 F11을 누름). 난 내 경우를 휴식. 기본 솔루션은 java (철식)와 같은 고급 솔루션보다 다양한 장치에 이식 가능합니다.
Tydus 경

답변:


9

C / C ++는 빠릅니다. 실제로 대부분의 앱은 현재 하드웨어 상태에서 이러한 성능이 필요하지 않습니다. 일반적인 방법은 C / C ++와 같은 저수준 언어로 필요할 때 최적화하는 것보다 파이썬과 같은 고급 언어로 응용 프로그램을 개발하는 것입니다.

파이썬은 생산성을 크게 향상 시키며 배우기 쉽고 합리적으로 빠릅니다. 이 사이 썬 병목 속도를 파이썬 같은 구문을 사용하여 파이썬 응용 프로그램에서 사용하기에 쓰기 C 확장에 사용할 수 있습니다.

표준 GUI 앱의 경우, 파이썬은 충분한 성능을 제공 할 수 있습니다. 그리고 파이썬에는 Mac, Windows, Linux, Android 및 iOS에서 실행되고 멀티 터치를 지원하는 GUI 프레임 워크 인 Kivy 라는 매우 멋진 기능이 있습니다. 보너스 부분은 성능 핵심 부분이 Cython을 사용하여 C로 최적화된다는 것입니다.


1
당신은 아마 속도에 관한 것입니다. Kivy는 매우 유능한 것처럼 보이지만 시스템 기본 위젯을 그릴 수 있습니까?
John Wells

아니, OpenGL ES를 사용하여 위젯을위한 자체 그래픽 엔진을 사용합니다. Qt는 아마도 크로스 플랫폼 네이티브 위젯에 가장 적합한 방법 일 것입니다.
Hakan Deryal

5

파이썬을 사용하면 생산성이 크게 향상됩니다. C ++에서 속도가 필요한 앱 부분을 계속 작성할 수 있습니다 . Python에서 C ++ 라이브러리를 직접 사용할 수 있는 Cython 프로젝트가 있습니다. 소스의 보안이 염려된다면 Cython이 도움을 줄 수 있습니다. Cython은이를 사용하여 일반적인 파이썬 코드를 C ++ 코드로 컴파일 할 수 있습니다.

Chrome 엔진을 포함시키고 HTML5 + CSS3 + Javascript + JQuery + Canvas와 같은 기술을 UI에 사용하는 것이 좋습니다.

C ++ 앱에 Chrome 엔진을 쉽게 내장 할 수있는 프레임 워크가 있으며이를 CEF-Chromium Embedded Framework 라고 합니다. Windows, Linux, Mac OS를 지원합니다.

Python을 좋아한다면 CEF Python을 살펴보십시오 . Cython 을 사용하여 CEF 프레임 워크에 Python 바인딩을 제공하는 프로젝트입니다 . CEF python은 현재 Windows 만 지원하지만 다른 OS에 대한 계획이 있습니다.

다음은 CEF를 사용한 성공적인 응용 프로그램 목록입니다 ( 여기 에서 가져옴 ).

  • Adobe Brackets-웹용 코드 편집기
  • Adobe Edge-멀티미디어 제작 도구
  • AppJS-Node.js를 사용하여 데스크탑 애플리케이션 빌드
  • AOL Instant Messenger-Windows 클라이언트는 CEF를 사용합니다
  • Cubiez-좋아하는 컨텐츠를 데스크탑에 통합
  • 데 수라-온라인 게임 플랫폼
  • Dish World IPTV-스트리밍 비디오 플랫폼
  • Evernote-Notetaking 소프트웨어
  • ExeOutput-HTML5 / php 애플리케이션을 데스크탑 애플리케이션으로 배포 할 수 있습니다
  • Windows 용 GitHub-Windows 용 GitHub 클라이언트 소프트웨어
  • Janetter-트위터 클라이언트 소프트웨어
  • mChef-mIRC 브라우저 플러그인
  • MediaMan-관리자 소프트웨어
  • MetaVR-지리 시뮬레이션 소프트웨어
  • MTG 스튜디오-게임 오거나이저 소프트웨어
  • OpenSpace3D-3D 개발 플랫폼
  • Rdio-스트리밍 음악 플랫폼
  • Spotify-스트리밍 음악 플랫폼
  • Steam 클라이언트-온라인 게임 플랫폼
  • Tencent QQ-인스턴트 메시징 프로그램 및 웹 브라우저
  • Trend Micro-인터넷 보안 소프트웨어
  • WBEA Desktop-html5 응용 프로그램을 데스크톱 응용 프로그램으로 배포 할 수 있습니다

이 블로그 항목을 살펴보십시오 . Web Technologies에서 데스크탑 품질 앱 구축 -브래킷 편집기 팀은 CEF 프레임 워크jQuery , Bootstrap , LESS CSS , requireJS , Jasmine for Unit testing , JSlint 와 같은 웹 기술을 사용하여 구축 한 방법을 설명하는 브래킷 편집기 팀 .

면책 조항 : 저는 CEF Python 프로젝트의 저자입니다.


입력 해 주셔서 감사합니다! CEF는 꽤 멋지지만 가능한 경우 각 플랫폼에서 고유 한 경험을 제공하기를 기대하고 있습니다. HTML, CSS 및 JS로는 재현하기가 어렵습니다.
John Wells

@JohnWells, 왜 네이티브입니까? 사람들은 웹 경험에 익숙합니다. Windows 8을 살펴보십시오. Microsoft의 다음 OS는 네이티브와 관련이 없으며 웹 기술을 강요하고 있으며 미래입니다. "기본 경험"과 같은 것은 없습니다. 과거의 일입니다.
Czarek Tomczak

그것은 당신이 말하는 소프트웨어에 달려 있습니다. 소비자 지향 응용 프로그램은 "웹"느낌으로 괜찮을지 모르지만 콘텐츠 제작을 중심으로 한 소프트웨어에서는 그다지 좋지 않습니다. 또한 Windows 8은 웹 기술을 지향 할 수 있지만 Mac OS는 여전히 고유 국가에 기반을두고 있으며 사용자는이 소프트웨어와 다른 소프트웨어를 싫어하는 경향이 있습니다.
John Wells

1
JBRWilkinson은 매우 적합하지만 필자가 필요하지 않은 경우 각 플랫폼마다 widget-mimic CSS (CEF의 경우)를 작성하고 싶지 않습니다.
John Wells

1
Mac 사용자 자신이기 때문에 기본 경험이 나에게 중요합니다. 내 눈에 보이지 않고 실행중인 OS와 일치하는 응용 프로그램보다 나쁜 것은 없습니다. 엄청난 생산성 향상과 같은 것조차도 그것을 능가하기에는 충분하지 않습니다.
John Wells

5

C ++의 Qt 방식은 훌륭하고 깨끗합니다. 제발, "추악한 거인"부분을 버리고 두 가지를 모두 시도해 보았으며 개인적으로 파이썬의 Qt 바인딩보다 Qt / C ++로 훨씬 더 생산적이고 편안합니다. 당신이 Qt와 함께하기로 선택한다면 그것은 내 충고입니다. Qt 기술이 제공하는 Qt 위젯과 Qt5 및 QtQuick2 의 고유 한 경험 외에도 앱에 JavaScript 및 HTML5를 포함 할 수있는 기능을 통해 웹과 같은 현대적인 모양과 느낌을 제공 할 수 있습니다.

그렇다면 왜 데스크톱 앱에서 Python을 좋아하지 않고 스크립팅 또는 서버 측 작업을 위해 Python을 유지하는 것을 선호합니까?

  • 파이썬은 약간의 크로스 플랫폼 기쁨을 깨뜨립니다. 클라이언트는 앱 (특히 Windows에서)을 실행하기 위해 Python을 설치해야하며 파이썬의 공식 웹 사이트에있는 다른 Python 버전은 클라이언트를 혼란스럽게 만듭니다. .

  • exe to Python으로 더 큰 앱을 만듭니다 (크기 측면에서).

  • 파이썬 앱, 더 많은 메모리를 섭취하십시오.

그것은 개인적인 관점입니다. Qt의 부모 시스템 인 스마트 포인터는 발이나 다리를 쏠 수 없으며 C ++ 11은 더 많은 기능을 제공합니다.


3
"클라이언트는 앱을 실행하기 위해 Python을 설치해야합니다"-앱과 함께 python dll을 배포 할 수 있으므로 사용자가 python을 수동으로 설치할 필요가 없습니다. py2exe 또는 다른 버그가있는 exe 제작자를 사용할 필요가 없습니다 (내 경험에 비추어 볼 때 Python Embedding 참조) . 앱의 크기. "Python 앱, 더 많은 메모리를 사용하십시오." -Cython을 사용하여 앱의 메모리 요구 부분을 최적화하십시오.
Czarek Tomczak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.