免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 无风之谷
打印 上一主题 下一主题

每个程序员都应该学习使用Python或Ruby,你怎么认为? [复制链接]

论坛徽章:
3
卯兔
日期:2013-08-15 13:17:31处女座
日期:2014-01-10 11:35:23双子座
日期:2014-01-25 02:16:06
81 [报告]
发表于 2012-05-07 11:09 |只看该作者
本帖最后由 sunny7476 于 2012-05-07 11:11 编辑

回复 80# starwing83


    在我说明他的行数时,我已经注明是根据风格的不同得到不同的计算结果。单一的算法实现,这里我是把main加进去,并按大括号另起来计算的(若您的观点不同,我尊重,我实在不想争这些。。。)。重要的是我哪句话说了“不能用C++11”的,我只是点明了他写的代码使用了C++11的功能。

您在第二段内容的观点我完全同意,我在77楼的开头也说了,他写的那三段代码很优秀(不过他还谦虚的说是“瞎写”的)。但您的语气好像是我将代码的行数与代码的技术含量简单的归纳成一个正比关系一样,请问你是从哪里得出我有这样的观点的?

谈到“比拼”的话题,很容易就走入极端。没想到一个想说明“Python通常情况下比C++短”的观点中一段“逻辑简单而书写繁琐”的代码会引起C++使用者的关注,然后尽力缩短C++的长度(语言的比较就此打住,这个观点在许多论坛上都发动一场结果是谁也不服谁的圣战)。这本书——《梦断代码》中,其中也有Guido的一句话,说Python的代码在通常情况下会比C++短3倍,5倍,甚至10倍(这是我回想的,可能与原话有点出入)。我的观点就是认同Guido的这个观点,他默认的前提应该是相似的代码复杂度(说清楚,不然又被制造出什么观点来了)。

我认同你在帖子里关于代码书写速度与行数的观点,但不要为了表达某种观点而事先假定别人持某种观点!

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
82 [报告]
发表于 2012-05-07 11:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
83 [报告]
发表于 2012-05-07 11:58 |只看该作者
在某些人看来Python的缩进让人用起来很不爽,当然也是某些人喜爱他的原因。

虽然Python的模块多,但是好些模块的代码风格也各不相同,如:有的模块的函数名采用驼峰式的命名风格,有的就不是。

哎,Python让我是即喜欢也讨厌。

一直听说Ruby也很不错,于是前天跑去图书馆借了本《The ruby way》来看看,

论坛徽章:
0
84 [报告]
发表于 2012-05-07 14:08 |只看该作者
哈哈,对不懂行的人来说,代码行数不都是钱么!!!!
钱啊!!!!!

论坛徽章:
0
85 [报告]
发表于 2012-05-07 14:09 |只看该作者
本帖最后由 KanonInD 于 2012-05-07 14:24 编辑

回复 76# 幻の上帝


    要是形参可以声明为auto就好了。例如:auto mergesort(auto ls) 和 auto merge(auto lsA, auto lsB)

论坛徽章:
0
86 [报告]
发表于 2012-05-07 15:13 |只看该作者
回复 85# KanonInD

如果是auto的原意,对于函数是没办法的。因为auto需要在编译时确定具体类型。不过倒是可以考虑作为简化函数模板的语法……
另外我想explicit最好可以在每个形参上用。(虽然可能更乱。)

论坛徽章:
0
87 [报告]
发表于 2012-05-07 15:21 |只看该作者
回复 81# sunny7476

“瞎写”其实不是谦虚……
上面那个是直接照着python版本一口气写的,能保证语义一一对应算法正确性就没问题,也就没特别验证过。
下面一个版本倒是稍微费了点心思尽量写短一点,不过也没想过有没有更短的。

论坛徽章:
3
卯兔
日期:2013-08-15 13:17:31处女座
日期:2014-01-10 11:35:23双子座
日期:2014-01-25 02:16:06
88 [报告]
发表于 2012-05-07 17:10 |只看该作者
回复 87# 幻の上帝


    以后还多向你们学习学习。

论坛徽章:
0
89 [报告]
发表于 2012-05-08 06:10 |只看该作者
楼主啊,我这边有个算卫星轨道的程序,C++的,在楼下的大型机上运行,大概三个月能够算出2020年左右的发射窗口。改用python  之后能够在 2020 年之前算完么?

论坛徽章:
0
90 [报告]
发表于 2012-05-08 07:03 |只看该作者
另外一个 merge sort
  1. template<typename IT> void merge(IT begin, IT middle, IT end, IT res)
  2. {
  3.         IT a = begin, b = middle, r = res;

  4.         while (a < middle && b < end)
  5.                 if (*a < *b) *r++ = *a++;
  6.                 else *r++ = *b++;

  7.         while (a < middle) *r++ = *a++;
  8.         while (b < end) *r++ = *b++;
  9.         while (begin < end) *begin++ = *res++;
  10. }

  11. template<typename IT> void mergesort(IT begin, IT end, IT res)
  12. {
  13.         int s = end-begin;
  14.         if (s > 1)
  15.         {
  16.                 IT middle = begin+s/2;
  17.                 mergesort(begin, middle, res);
  18.                 mergesort(middle, end, res);
  19.                 merge(begin, middle, end, res);
  20.         }
  21. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP