第一次软工作业(构建之法)

关于构建之法的若干个问题

1.第一章32页,原文:“有人认为,“中文编程”,是解决程序员编程效率的一个秘密武器,请问它是一个“银弹”么?

  关于这个问题,我首先要回答:“中文编程”绝对可以大幅提升中国程序员的编程效率。

  我首先要说一个我的经历,就是我之前碰上了一个学长,他看过我写过的一些python程序,然后吐槽我对一些特殊函数的命名是中文,说不符合编程规范。

  可以看出,他也许是一个中文编程的反对者,而且像他这样的中文编程反对者不在少数。

  我首先要说一下为什么我认为中文编程的理解。

  我认为,中文编程意味着不仅仅某种语言自带的函数可以用中文,还意味着变量,函数命名可以用中文。

  我认为这么做带来的好处是用可以少量增加编码时间(主要是输入法麻烦),来换取大幅降低读代码的时间,效率大大提高

  我们看我第一次个人项目两个英文的变量名,比如说

  如果我不说,各位看官可以看出这两个变量是什么意思么,数字的可能性?其实是数字填充方式的意思,如果用英文表达清楚,那么这个变量名会非常长,而且也未必好理解

  而且同样的意思,用中文表达往往比英文要短很多的

  用中文一瞬间就读懂了变量的意思,我认为快速读懂变量,函数意思可以大幅减少读代码的时间

  我们再看一个英文变量名

  target?换成flag行不行,作为一个非英语母语的编程者,我认为这两种方式没有区别

  同时还有,squared与block,也可以相互替换

  而且英文还有大小写的问题,这就造成了一个变量可以有很多种命名方式,导致多人编程需要制定严格且详细的编码规范

  但是用中文命名就非常舒服了,不管是target还是flag,我想,除了标记就没有其他的答案了

  这样可以总结出,中文编程可以让自己的代码可读性大大加强,编码规范也更容易制定

  如果库函数可以用中文调用呢?我想,这可以大大减少程序员学习文档的时间吧,也是一种提高效率的手段。

  最后,中文编程可以降低编程工作者的英语门槛,可以让程序员更加专注于程序本身的逻辑,也可以间接提高效率。

  到这里我就要问了,为什么这种提高中国程序员编码效率的手段会遭到那么多编程者反对呢?

2.第三章66页,软件工程师的成长

  这个“精通者”的经历我也深有感触,在学习某一项新技术的时候,安装与配置环境很令人头大,如果没有成熟的教程,看文档的过程更令人头大。

  这就是这本书定义的低层次问题,但是这种门槛往往会让我更愿意用现成,已经掌握的技术(说来惭愧,VS也是我刚刚用的编辑工具,之前一直是VC6或者vim,没探索过别的),如果对新技术不了解或暂时不急切就不去探索。

  我想问一下,我目前这个问题在以后的发展中能对我造成多大阻碍,换计划说,我这样对新技术保守的态度带来的弊端有多大?

3.第四章98页,两人合作

 关于性格对合作的影响,根据我的观察,和我同年级的计算机专业的本科生大概能通过编码风格分成两类

  第一种是重视代码运行效率大于代码可读性,第二种是重视代码可读性大于代码运行效率,我属于前者

  亲身经历,不同类型的程序员交流技术往往因为思维方式的不同导致交流难度大于相同类型的程序员

  而且同种类的程序员往往在技术方面的观点也相似,长处与缺点也相似。

  我认为把程序员分为这两类的原因是思维方式的不同,而不是性格不同

  程序员的性格大体相似

  因此,我认为思维方式对合作的影响比较大

  我想问我这个观点合理不合理,我上述观察的现象在公司内是否也存在?

4.第四章98页,两个人的争论

  这两个人争论的有一个点,就是关于C++的新特性有没有必要用

  我个人的观点是,能用朴素的手段快速解决就没有必要用新特性

  我这个观点就导致了我大一上C语言课从来没调用过string,h这个库,自己搭了一万个轮子

  但是这样不了解新特性就会造成编码效率的降低

  但是花时间去了解新特性可能会出现长时间不用又忘了,同样浪费时间

  这就造成了一个矛盾

  我想问一下,一个语言更新出现了一些新特性,普通的编程者不知道这些新特性是用来解决什么问题的

  那么这些新特性是否需要在语言更新时就花时间进行学习。

5.两人合作 79

  关于goto

  我记得大一的时候学C语言老师禁止使用goto

  现在这里又说了可以使用goto

  我是这样理解的,大一禁止使用goto是因为我们刚接触编程,goto虽然很方便,但是用goto来回跳会导致逻辑混乱

  现在允许使用goto,是因为我们已经接触和编写了一定量的代码,对程序逻辑有一定的把控能力,因此可以使用goto来让逻辑更清晰

  我这样理解合理不合理?

请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?

    早在20世纪50年代,有关软件的编程语言就已经出现,但是关于软件工程这个概念却要远远晚于软件发展。据资料显示,软件工程这个概念最早出现在20世纪60年代末期。

大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?

  一个测试工程师走进一家酒吧,要了一杯啤酒

  一个测试工程师走进一家酒吧,要了一杯咖啡

  一个测试工程师走进一家酒吧,要了0.7杯啤酒

  一个测试工程师走进一家酒吧,要了-1杯啤酒

  一个测试工程师走进一家酒吧,要了2^32杯啤酒

  一个测试工程师走进一家酒吧,要了一杯洗脚水

  一个测试工程师走进一家酒吧,要了一杯蜥蜴
 
  一个测试工程师走进一家酒吧,要了一份asdfQwer@24dg!&*(@

  一个测试工程师走进一家酒吧,什么也没要

  一个测试工程师走进一家酒吧,又走出去又从窗户进来又从后门出去从下水道钻进来

  一个测试工程师走进一家酒吧,又走出去又进来又出去又进来又出去,最后在外面把老板打了一顿

  一个测试工程师走进一

  一个测试工程师走进一家酒吧,要了一杯烫烫烫的锟斤拷

  一个测试工程师走进一家酒吧,要了NaN杯Null

  一个测试工程师冲进一家酒吧,要了500T啤酒咖啡洗脚水野猫狼牙棒奶茶

  一个测试工程师把酒吧拆了

  一个测试工程师化装成老板走进一家酒吧,要了500杯啤酒并且不付钱

  一个测试工程师走进一家酒吧,要了一杯啤酒';DROP TABLE 酒吧

  一万个测试工程师在酒吧门外呼啸而过

这个笑话我认为非常能反应软件工程中软件测试的特点,笑话虽然是这么说的,但是软件测试也是这么做的,我认为很有趣。

上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?

  tfs:TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读写性能。

  git:Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。

  Mercurial:Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。

  github:gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。

  bitbucket:BitBucket 是一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户。

  trac:Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。Trac以简单的方式建立了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件;Trac应用力求不影响现有团队的开发过程。

  bugzilla:Bugzilla 是一个开源的缺陷跟踪系统(Bug-Tracking System),它可以管理软件开发中缺陷的提交(new),修复(resolve),关闭(close)等整个生命周期。

  rational:Rational是提供基于业界开放标准的工具、最佳方案和服务,用于开发商业应用和构建软件产品及系统,包括移动电话和医疗系统等设备使用的嵌入式软件。在IBM的帮助下,Rational将进一步提升软件开发能力,创造更多业务价值。有了它,企业在未来的On Demand(随需应变)时代中将拥有更快的反应、更有弹性的运营策略和更加明确的发展方向,从而取得更大成绩。

  xcode:Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由苹果公司开发。Xcode是开发OS X 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。

posted on 2017-09-26 20:49 永远与须臾的罪袋 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/514DNA/p/7596472.html

第一次软工作业(构建之法)相关推荐

  1. 第一次软工作业(数独)

    第一次软工作业(数独) 1.该项目的github地址: https://github.com/514DNA/sudoku 2.各个模块耗费的时间: PSP2.1 Personal Software P ...

  2. 第一次软工作业展示——潘学

    第一次软工作业完成啦! 回首这个作业的完成过程,我是很有收获.这个作业有几个难点:1.在给定目录下读取TXT文件的内容:2.从读到的内容中分析出单词:3.统计单词的出现频率并输出. 我之前只学习过C和 ...

  3. 20194711 阚宇航 第一次软工作业

    (1)<现代软件工程-构建之法>第一章计算机专业术语 (2)通读教材我的疑问: 1.看了第三章提到了"软件团队由个人组成的,在团队的大流程中,是每一个具体的人负责开发,测试,用户 ...

  4. 软工作业 5:词频统计——增强功能

    一.基本信息 1.1 编译环境.项目名称.作者 1 #编译环境:python3.6 2 #项目名称:软工作业5-词频统计-增强功能 3 #作者:1613072055 潘博 4 # 1613072056 ...

  5. 第三次软工作业——实现最大字段和算法并进行判定条件覆盖

    第三次软工作业 实现最大子段和的算法并进行条件组合覆盖测试 (一)什么是最大子段和? 我自己的理解: 一个数组可以若干个子数组,包含自身.每一个字数组都有一个数组元素之和,求这些和之间的最大值. 最朴 ...

  6. 【软工作业思考】关于软工的一些概念性理解暨第一次阅读作业

    概述 项目 内容 本次作业所属课程 2019BUAA软件工程 周二班 本次作业要求 第1次个人作业 当然,比这个更重要百倍的还是实实在在的思考,这也是标题如此命名的原因 我在本课程的目标 在原有实践经 ...

  7. 软工作业阅读计算机前辈的随笔有感

    荣誉是时间的女儿. -- 阿兰. --记第一次随笔有感. 我为什么选择计算机? 一直到高考志愿报考前,我都没认真去思考过我未来的职业,我甚至都没有构想过我的未来,在我的印象中,我应该就考上个大学,毕业 ...

  8. 2019/3/14 软工作业

    自我介绍 2017xxxxx1066:我是骆树仁:我的爱好是揉白泽球: 我的码云个人主页是:https://gitee.com/sturdast/events 我的第一个项目地址是:https://g ...

  9. [2023软工作业]个人作业-软件案例分析

    项目 内容 这个作业属于哪个课程 2023年北航敏捷软件工程 这个作业的要求在哪里 个人作业-软件案例分析 我在这个课程的目标是 掌握软件工作开发方法,并进行实践 这个作业在哪个具体方面帮助我实现目标 ...

最新文章

  1. 从另一服务器传输文件到本服务器(服务器间传输文件)
  2. C++ Primer 5th笔记(chap 16 模板和泛型编程)函数模板显式实参
  3. swift 雨燕 新手教程
  4. 底部按钮吸附_知乎的药丸按钮(二)我的 iOS 实现
  5. java下标和相等的矩阵_39.数组中数值和下标相等的元素
  6. IMGUI 系统 - Dear ImGUI
  7. 高中计算机学业水平考试教程,高中学业水平考试信息技术操作题步骤
  8. 多媒体技术是指用计算机和相关设备,计算机多媒体技术基础知识
  9. RINEX3广播星历中的toc,toe,IODE 及时间规化
  10. 一篇小文入门 Python
  11. 女程序员晒出5月的工资条:工资是高,但是真累,网友评论炸锅了
  12. lol服务器位置2017,LOL怎么转区 LOL转区方法 LOL转区系统2017最新教程
  13. [递推式求解、多指针、前缀和]XATU第七届算法大赛
  14. FPGA 之 SOPC 系列(一)
  15. 2022腾讯云年终双十一活动攻略汇总!
  16. 学习笔记:C语言程序设计
  17. 【转】超实用网站,一次性分享出来
  18. python 语料标注_语料标注工具(3)
  19. IDEA版本和JDK版本对应关系
  20. OA无纸化政府办公原笔迹电子签名解决方案

热门文章

  1. 腾讯云短信服务(SMS)申请流程
  2. python文件审计_Python代码审计实战案例总结之CRLF和任意文件读取
  3. atol的实现【转】
  4. 微信小程序有哪些优点和价值
  5. Mac下用docker安装阿波罗Apollo
  6. 转阿彪 PHP常见的安全问题
  7. 服务器显卡直通和GPU问题分析
  8. Fortran NINT函数意思
  9. 2023年软考考试时间及相关安排
  10. Excel如何将一个单元格数据拆分为多行单元格