java2000行代码项目_脚本能开发大项目吗?

——根据2006年的讨论收集整理

一般印象中,脚本缺乏编译纠错,也没有好的调试跟踪工具

写写零零星星的工具、原型是上手快

但是做较大的项目,可能会难以胜任

但是,从代码量与复杂度的角度分析,好像正好倒过来了

python/ruby这些新的语言,不仅仅支持库强大,本身的表达能力也比较强悍/精炼

原来java需要1000行的,它们只要200行就行了

所以,比一般想象中的刚刚够复杂的系统再大5倍之内的系统,它们还是都能应付的

严格来推算,应该是25(5^2)倍或32(2^5)倍吧

因为 代码量的增加 导致的复杂度是加速增加的。。。

假设不采用严格控制的java所能开发的系统的复杂度极限为X,用java代码衡量,大约10000行(假设)的话

用python开发只要2000行就行了

如果一个系统,python也需要10000行,java就需要50000行,

那就是说这个系统的复杂度已经是X的32(2^5)倍了。。。

代码效率高5倍,能控制的项目的代码规模也可以大5倍,换算成复杂度,就是低25、32倍

当然这是理论值,所以最初保守的估计是能控制的项目的复杂度可以大5倍

就像以前只能用汇编语言,一般人能写的程序都比较简单的

有了c/c++后,一般人能写的程序功能也可以强大一些了

有了delphi/vb,一般人能写的程序功能就可以更强大了

虽然说:同样的项目,有 70个人,不能 比 10个人来做 快7倍

(在非严格、有效控制的模式下,多人合作开发时带来的沟通、协调的困难会抵消人多在数量上优势)

但是,一个项目,如果复杂度(代码量)降了7倍,就意味着这10个人会轻松很多;只有大7倍的项目,才是他们以前工作负荷(正常掌控能力)

我的判断的依据是:一个人能控制的代码量是恒定的(在同样人数、同样管理模式的项目中)

代码(本身的表达、描述、控制)效率高了,

在同样人数的开发过程中,

单人能控制的代码量并没变,

但是同样行数的代码量,新语言能完成的功能(复杂度)已经提高了很多倍

另一个规则:代码量的增加,会导致复杂都加速(而不是线性)增加

在同样人数的开发过程中,

单人能控制的代码量并没变,

但是换算成旧语言(java)的代码量,两者就会有5倍的差距了

对应的项目的复杂度按旧语言的代码量计算,对应地,就有5^2或2^5的差距了

换一个角度:在相同的开发模式、相同的人数下,一个人能控制的代码量是有极限的,假设为1万行--a

按旧到新排列:汇编语言、java、python都是1万行

(其实,旧的语言一般更难控制,人能控制的极限行数应该更少,这里姑且认为一样吧)

但是语言本身的表达、描述、控制的效率(平均到每行)是有差异的

估计java的表达能力是汇编的5倍,python的表达能力是java的5倍--b

以java的1万行为基准,汇编大约要5万行才能实现同样的功能效果,而python可能只需要2千行

再套用一个人能控制的代码量的极限:1万行

再以java为基准,1万行的汇编代码,只能实现java的2千行的功能,而1万行的python已经能实现5万行java能实现的效果了--c

再套用一个规则:项目的复杂度与代码量成平方或指数的关系--d

5万行java的项目的复杂度已经是1万行java的项目复制度的5^2(=25)或2^5(=32)倍了

所以,结论是:一个人用不同语言,能控制的项目的复杂度极限分别为:

以java为基准,设1万行java的复杂度为:X

汇编:X/25或X/32

python:X*25或X*32

考虑到python目前尚无好用的跟踪调试手段,保守一点,应该也有X*5吧

附:

使用过delphi之后,再使用c/c++(没使用string,只使用char*或s[]),总感觉特别费劲

仔细想了一下,原来是字符串操作最明显:

本来delphi字符串赋值或附加是一句话的事情,c里面却不得不先计算好事后的字符数,再分配空间,才能复制或追加,而且很多时候还必须释放空间。。。。。

当然,delphi写服务程序(需要长期运行)也容易因为频繁或大量的字符串操作所引发的内存碎片等问题而不稳定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个C++管理系统基本涵盖了“学生成绩管理系统”的所有功能,你可以从中借鉴到C++链表、类、封装、继承、文件操作、排序等等很多知识,极具借鉴意义,以下为本项目的功能介绍: 1. 建立文件 (1)可以使用默认文件名或指定文件名将记录存储到 (2)设置适当的标志位,作为对记录进操作的 (3)写同名文件将覆盖原来文件的 2.增加学生记录 (1) 可在已有记录后面追加新的记录 (2) 可以随时增加新的记录,它们仅保存在向量数组中 (3) 可以将一个文件读入,追加在已有记录之后 (4) 采取文件追加方式时,在没有保存到文件之前,将继续保持文件追加状态,以便实现连续追加操作方式 3. 新建学生信息文件 (1) 用来新建学生信息记录 (2) 如果已经有记录存在,可以覆盖原记录或者在原记录后面追加,也可以将原有记录信息保存 到一个指定文件,然后重新建立记录 (3) 给出相应的提示信息 4. 显示记录 (1) 如果没有记录可供显示,给出提示信息 (2) 可以随时显示内存中的记录 (3) 显示表头 5. 文件存储 (1) 可以按默认名字或指定名字存储记录文件 6. 读取文件 (1) 可以按默认名字或指定名字将记录文件读入内存 (2) 可以将指定或默认文件追加到现有记录的尾部 (3) 可以将文件连续追加到现有记录并更新记录中的“名次” 7. 删除记录 (1) 可以按“学号”、“姓名”或“名次”方式删除记录 (2) 标志将被删除的记录, 可以再次取消标志, 经确认后删除已经标志的记录(3) 如果记录是空表, 删除时应给出提示信息并返回主菜单 (4) 如果没有要删除的信息, 输出“没有找到”的信息 (5) 更新其他记录的名次 (6) 删除操作仅限于内存, 只有执存储操作时, 才能覆盖原记录 8. 修改记录 (1) 可以按“学号”、“姓名”或“名次”方式查找要修改的记录内容 (2) 给出将被修改记录的信息, 经确认后进修改 (3) 如果记录已经是空表,应给出提示信息并返回主菜单 (4) 如果没有找到需要修改的信息, 输出“没有找到”的信息 (5) 更新其他记录的名次 (6) 修改操作仅限于内存, 只有执存储操作时, 才能覆盖原记录 9. 查询记录 (1) 可以按“学号”、“姓名”或“名次”方式查询记录 (2) 能给出查询记录的信息 (3) 如果查询的信息不存在, 输出提示信息 10. 对记录进排序 (1) 可以按”学号”进升序和降序排列 (2) 可以按”姓名”进升序和降序排列 (3) 可以按”名次”进升序和降序排列 (4) 如果属于选择错误, 可以立即退出程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值