標籤:解決方案 python 開發 伺服器
- 背景介紹
- pyqt 用戶端方案
- C 和python 混合編程方案
- 純python伺服器解決方案
-
- 由於對伺服器開發熟悉程度不高暫時未想到應用程式伺服器的開發應用求指點
- 網路快速測試方案
- 學術研究
- 反思
- 問題
背景介紹
三年的C++ windows 用戶端的開發經驗, 接觸python也快有兩年了。 記得最開始會選擇接觸python的原因是因為李開複老師的強烈推薦。 接觸以後一直對python簡潔的編程風格所傾倒。自己的C++ 編程風格和設計思路上受到python 的影響很大,因為這個原因,一直以來都會花費一定的時間在python上。
雖說興趣是最好的老師。, interests (興趣)和interests(利益)不能掛鈎,再強烈的興趣最終都可能因為失去生長的土壤會枯萎。學習python 的本身也是為了更好的應用python到工作或者生活中去解決問題。
備忘:
這裡說的利益,不是指狹義的金錢利益。而是指廣義的收穫,或提高開發效率,或解決原有解決不了的難題,或者改善編程體驗。
目前工作中主要使用C++ 從事windows MFC 用戶端編程,部分涉及伺服器網路開發編程和底層開發。
在python熟悉了將近兩年之後,總在思考一個問題。
使用Python 能夠為我帶來什麼改變? 我能用Python 做些什麼呢?
但是現在在Python技術上卻感覺未能取得一點點值得欣慰的成就。也並未在工作效率上,或者解決方案上有所突破。 這給我未來的技術方向敲醒了警鐘。一直有一個信念:
編程是為瞭解決協助別人或者自己去解決問題
很顯然,平時投入大量的時間和精力在python上卻並未達到預期的要求。感覺很多技術都是用則強,不用則廢。Python 雖然學習了很多相關方面的知識,但是卻感覺自己一直找不到應用開發情境。這個問題讓我陷入了沉思。所以寫下一些文字好好反思一下,和大家分享一下自己失敗的教訓,過來人能夠指點迷津
衡量開發效率參考標準:
熟悉程度 |
IDE 的熟悉 |
開發語言的熟悉 |
開發庫的熟悉 |
項目架構功能的熟悉 |
C++ |
★★★★★ |
★★★★ |
★★★ |
★★★★ |
Python |
★ |
★★★ |
★ |
★★★ |
這四者的熟練程度很大程度上決定了一個項目的開發效率。
- python優勢:語言開發高效友好, 支援類庫龐大。
- python劣勢: 執行效率不高
- C++ 優勢 : 機器效率高,和C 語言相容好
- C++ 劣勢: 開發庫不全面,學習成本較高
pyqt 用戶端方案
概述: 通過使用pyqt 快速繪製介面, 使用python作為開發。實現快速開發的目的。
- 優點: python文法簡單, (熟悉pyqt 介面庫的前提下)開發速度快
- 缺點:鑒於pyqt 的親媽qt 在windows 平台下都難以有所作為和發展的情況。 pyqt 面對企業級應用開發可能更是力不從心。pyqt 依賴於一整套較大的介面庫,學習成本較大。pyqt 被團隊 和市場認可度不高,難以實現正規化發展和應用
適用情境: pyqt 開發僅適合輕量級的應用程式開發(輕前台重後天的情境)
結論: 而對於企業級應用程式開發,被市場和Team Dev認可度較低。且技術可實現度不明朗,缺乏論壇的支援,可發展前景極低。 在熟悉MFC 的基礎上, pyqt用戶端的開發效率幾乎沒有任何優勢。 無法獲得認可。
在windows 平台下 , python可表現的機會並不多,因為即使是QT,Java 這些曆史悠久的解決方案都沒有什麼起色。 其主要的實力發揮可能更多集中在領域邏輯層(複雜邏輯處理) 和資料層(網路,資料庫)。
C++ 和python 混合編程方案
優點: 實現對於 C++ 的庫的拓展支援, 利用python 快速高效的指令碼語言, 處理複雜的事務邏輯, 有著得天獨厚的優勢。 C++ 負責效率, python 負責邏輯處理,參考 lua + C++ 開發的模式。
缺點: **介面設計麻煩, 混合編程複雜度增加。 聯合調試困難, 對於團隊合作不利。 用戶端的混合編程。需要打包python相關組件。
適用情境: 伺服器領域開發, 商務邏輯複雜度較高,對效能要求較高的產品**
結論: 在處理較為複雜的商務邏輯,而且在伺服器領域開發擁有一定優勢,但是可等待的機會不多。 目前本人已經實現python 和C++ 混合編程的初級階段和混合編程的打包處理技術
純python伺服器解決方案
twisted 應用伺服器 ,網頁伺服器開發
優點: python 中存在大量優秀的 網頁伺服器庫可供選擇。
缺點: 公司目前的用戶端程式暫時不支援webkit 開發,http 響應速度較慢,更多的網路通訊是走底層的 tcp/udp 通訊或者封裝後的通訊協定
備忘:
由於對伺服器開發熟悉程度不高,暫時未想到應用程式伺服器的開發應用,求指點!!!網路快速測試方案
描述: 為解決基於 udp/tcp http 網路通訊開發中的
優點:利用 twisted 庫高效靈活的優勢,可用較為簡單的方式快速開發配置 較為複雜的網路通訊測試方案,確定網路通訊過程中存在的問題
缺點:無法實現 C /S 兩端 代碼風格複用。 需要重寫代碼
使用場合: 適用於網路通訊較為複雜的通訊過程。
結論: 目前為止唯一想到的可輔助工作應用的場合,自動化的測試。
學術研究
使用python 做一些 前沿技術探索,學術研究,類庫介面設計學習等方面的研究
優點: 積累一些黑魔法,黑科技,實現快速上手的目的。
缺點: 適合學校和學術機構,不適合商業領域
技術規劃
PC用戶端(C++)—伺服器(python , Java, C++)—android的發展規劃(Java, C++)
雖然很喜歡Python的開發方式,但是苦於兩年時間依舊沒有能夠找到一個能夠實現Python 自我造血方式。 如果僅僅是憑藉著興趣,在每天下班之後的幾個小時學習應用Python,再強烈的興趣最終都可能失去生長的土壤而枯萎。 因為用的情境少,導致熟悉度一直無法提高,最終的結果是使用Python 開發效率不高。在選擇開發方案的時候, Python始終無緣選擇項。
反思
最近在接觸java語言時候,讓我想起java起家流行的原因。使用Python 進行介面開發的嘗試,或許是一個比較愚蠢的決定,僅僅是當時因為熱情,因為喜歡,頭也不回的學習使用了。
如所示,Python 和C++ 的關聯性,相似性不是那麼大。想要實現兩者1+1> 2的難度,相比於Java 就不那麼容易了。
Java 曾經走過路,或許才是是python 應該走的,基於網路伺服器的方案來更加高效的解決問題
問題
俗話說:當局者迷旁觀者清。 一門技術,一種解決方案的興起發展,往往與其有著更高的開發效率,實現手段,強大的功能有著緊密的關係。想請教經驗人士一個問題:
在我當前的工作環境下,應該選擇什麼樣的python技術方案或者路線,才能在C++的開發情境下立足???
Python 學習開發的兩年後的反思