- 论坛徽章:
- 3
|
第一个正式学习的语言就是Python,这里的“正式学习”是指真正开始用一门语言做东西,在学校里开了《XXX程序设计》一门课并去上了但没自己做东西不算。
先发点牢骚吧。大环境所致,用Python做东西,别人会说你不“正统”:
情节1:
“我要用Python写程序”
——“厉害的程序都是C/C++写的,。。。(此处不宜显示,省略)”。
“做相同的事情,Python用的代码比其他语言要少,能节省时间”。
——“年轻人不要怕吃苦,光想着偷懒”。
情节2:
“我这是Python写的,来学吧,Python会节省大量的时间!”
——“哦,我看看,。Python安装哪个版本啊?”
“先用2.7的”
——“……@#¥%……(安装中)没有像C#一样的官方IDE啊?”
“IDE只是个工具,(解释。。。)”
——“Python用到的库都要自己配,怎么界面还不能拖出来,还有那么多“界面库”(某位同学是这么称呼的)工具,选哪个啊?”
“有Python自带的tk,还有wxPython、PyQt、PyGTK。这些都有各自的所见即所得的界面设计工具”
——“什么乱七八糟的,不玩了,去看我的C#去。。。”
情节3:
(碰到一个用Python的,先聊了一会。。。捧了下Python)
——“你是用什么框架的,Django?”
“我是用Python做桌面的”
——“Python的长处是做网络的啊,做桌面的速度多慢啊。”
“(沉默,不知道怎么回答)”
当然,这跟我处的环境有关,我一般接触不到纯粹以写代码为工作的人。而是一些为了完成一些目标,用一些程序来实现,看这些目标能否实现。他们认为,无法快速“拖”出窗口的语言,就不是简单易学的语言(微软“害人不浅”啊)。
接触到Python的人,都会听说Python的代码量少,尽管Python的教材上有了暗含的例子,可是并没有直观的印象。这里就贴一段比较代码吧(Wiki上找到的,根据“合理引用“规则引用,版权归Wiki所有)。
归并排序的,C++代码- void Merge(int a[], int b[], int low, int mid, int high)
- {
- int k = low;
- int begin1 = low;
- int end1 = mid;
- int begin2 = mid + 1;
- int end2 = high;
- while(begin1 <= end1 && begin2 <= end2)
- {
- if(a[begin1] <= a[begin2])
- b[k++] = a[begin1++];
- else
- b[k++] = a[begin2++];
- }
- if(begin1 <= end1)
- for(int q = begin1; q <= end1; q++)
- b[k++] = a[q];
- else
- for(int q = begin2; q <= end2; q++)
- b[k++] = a[q];
- }
-
- void MergePass(int a[], int b[], int seg, int size)
- {
- int seg_start_ind = 0;
- while(seg_start_ind <= size - 2 * seg)
- {
- Merge(a, b, seg_start_ind, seg_start_ind + seg - 1, seg_start_ind + seg * 2 - 1);
- seg_start_ind += 2 * seg;
- }
-
- if(seg_start_ind + seg < size)
- Merge(a, b, seg_start_ind, seg_start_ind + seg - 1, size - 1);
- else
- for(int j = seg_start_ind; j < size; j++)
- b[j] = a[j];
- }
-
- void MergeSort(int a[], int size)
- {
- int* temp = new int[size];
- int seg = 1;
- while(seg < size)
- {
- MergePass(a, temp, seg, size);
- seg += seg;
- MergePass(temp, a, seg, size);
- seg += seg;
- }
- }
-
- int main()
- {
- int a[] = {3, 5, 3, 6, 4, 7, 5, 7, 4};
- MergeSort(a, sizeof(a) / sizeof(*a));
- //输出
- for(int i = 0; i < sizeof(a) / sizeof(*a); i++)
- cout << a[i] << ' ';
- cout << endl;
-
- return 0;
- }
复制代码 对应的Python代码:- def merge(l1,l2):
- final=[]
- while l1 and l2:
- final.append(l1[0] <= l2[0] and l1.pop(0) or l2.pop(0))
- return final +l1 + l2
- def mergesort(List):
- mid=int(len(List)/2)
- if len(List)<=1:return List
- return merge(mergesort(List[:mid]),mergesort(List[mid:]))
复制代码 代码量的多少一目了然。
正如同楼主所说,关于Python和其他语言做比较的文章在Google上一大把,这里就不细说了。
就那一句:Python的确能节省你很多时间!!!
最后,还有一个小小的希望:希望PyPy能火起来。。。
|
|