《梦断代码》阅读笔记02

  在第四章《乐高王国》中,有一段是Chandler的后台工作陷入了作出艰难技术决定的迷宫,而麦卡斯科猛然间发现自己正深处迷宫中央。麦卡斯科曾经在自己的“树龙”blog中记载开发新编程语言的项目,他加入OSAF后,又开始在blog上满怀热情地逐封回复探讨技术的邮件。对于回复某篇写到:“我们打算尽可能多地复用现有代码,少写新代码。要加快工作进程,就得尽量避免踏入新的编码地带。”

  在我们编程的很多时候,觉得差不多作用的代码就复制过来,然后改一下错误的地方。而曾经一位老师和我们说:“复制代码是一切错误的来源。”所以,想要复制代码时也要谨慎啊!

   现今最为普遍使用的计算机数据库,——比如获得巨大成功的Oracle产品,或者日益流行的开源产品MySQL——是“关系型数据库”,信息被打散成离散的小单元,存储在大表中,你可以构造复杂的查询语句、有效组合这些信息——例如“展示从这个信息开始的,姓以‘c’开头的、但不包括那些遗漏了街道地址的所有数据。”因为有一种叫做“事务”的模型,关系数据库通常相当可靠。事务模型记录对每个小数据的每次修改,这样,当发生崩溃或数据损坏的,还能重建信息。

  实现“对象持久化”最简单的手段就是采用另一种数据库技术,即对象数据库,对象数据库把一段代码和与之相关的数据打包存储。数据和代码一起存储便于程序员编写功能代码,但也会比较慢,同时也比较不可靠。

模块化和组件化是软件人员的梦想,谁都想把几个模块插到一起就可以完美的运行并完成任务,但现实却相当残酷,可以运行的模块通常不能与自己想写的程序配合工作,好的源代码由于商业利益也不太容易找到,程序员只能自己另起炉灶,搭建自己的模块,但结果还是一样,做出来的东西难以让他人共享,这个现象周而复始,不断地在多个程序员身上上演。

最近有一个叫组件管理方面的项目,听起来让人毫无信心,连运行在什么平台上、给什么用户使用都不清晰,这样的组件管理有什么用?还不如就叫做文档管理算了。

书中提到一个叫考克斯的人,他创办了一家叫做Stepstone的公司,致力于向C语言系统搭造者提供插入式芯片级软件组件,最后的结论是:坏消息是这次试验显示,即便采用最新的技术,要想设计和制造既有用又真能复用的组件、为组件写文档以便于客户理解、移植组件到潮水般不断涌现的新硬件平台上、确保最新的改进或发布版本不与现存接口冲突、将组件销售到类似威廉姆斯堡枪械行业那种鼓励从头做起的价值体系,都是极其困难的。

 

转载于:https://www.cnblogs.com/qilin20/p/8270827.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PMP - 2011年6月考前辅导班

2011年6月份考试授课计划安排,欢迎合作。 5月1日 - 5月3日: 考试相关事项;项目管理框架概述;PMBOK知识体系串讲(项目管理5大过程组和9大知识领域) 5月14日-15日:综合知识案例讲解;考点、重点、难…

mysql命令行执行复杂sql_mysql命令行中执行sql的几种方式总结

1.直接输入sql执行MySQL> select now();---------------------| now() |---------------------| 2013-09-18 13:55:45 |---------------------1 row in set (0.00 sec)2.执行编写好的sql脚本mysql> source H:/1.sql---------------------| now() |---------------------|…

Spring集成Quartz定时任务框架介绍

一、增加所依赖的JAR包1、增加Spring的Maven依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.0.5.RELEASE</version></dependency>2、增加Quartz的Maven依赖 <…

检测机安装mysql_centos安装mysql的正确方法

1、官方安装文档2、下载 Mysql yum包下载到本地再上传到服务器&#xff0c;或者使用wget 直接下载wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm3、安转软件源将platform-and-version-specific-package-name 替换为你下载的rpm名sudo rpm -Uvh plat…

再次分享一个多选文件上传方案

多选文件上传&#xff0c;已经非常多了&#xff0c;选择性多了可能有时候要比较下哪个更合适&#xff0c;结合到项目中使用更方便才是最重要的。很多的多选上传基本上都是调用的swf文件&#xff0c;确实用flash 或flex开发一个多选上传的功能很方便&#xff0c;比如flex里内置的…

2017软件工程实践总结

一、请回望暑假时的第一次作业&#xff0c;你对于软件工程课程的想象 1&#xff09;对比开篇博客你对课程目标和期待&#xff0c;“希望通过实践锻炼&#xff0c;增强计算机专业的能力和就业竞争力”&#xff0c;对比目前的所学所练所得&#xff0c;在哪些方面达到了你的期待和…

mysql use mysql_1、设置mysql远程访问执行mysql 命令进入mysql 命令模式,执行如下SQL代码mysql use mysql; mysql GRANT ALL ON ...

1、设置mysql远程访问执行mysql 命令进入mysql 命令模式&#xff0c;执行如下SQL代码mysql> use mysql;mysql> GRANT ALL ON *.* TO admin% IDENTIFIED BY admin WITH GRANT OPTION;# 这句话的意思 &#xff0c;允许任何IP地址(上面的 % 就是这个意思)的电脑 用admin帐户…

HTTP 头部解释,HTTP 头部详细分析,最全HTTP头部信息

HTTP 头部解释 1. Accept&#xff1a;告诉WEB服务器自己接受什么介质类型&#xff0c;*/* 表示任何类型&#xff0c;type/* 表示该类型下的所有子类型&#xff0c;type/sub-type。2. Accept-Charset&#xff1a; 浏览器申明自己接收的字符集Accept-Encoding&#xff1a; 浏览…

shell编辑crontab任务

crontab是Linux下执行定时任务的工具&#xff0c;之前偶尔需要用到时都是通过执行crontab -e命令或者通过root身份直接编辑/etc/cron.*/下的文件来添加定时任务。这段时间遇到了需要通过shell来自动添加或删除crontab的需求。在shell中无法通过crontab -e来与crontab编辑器交互…

条码生成代码(Code39码)

zryou 的 条码生成代码(Code39码)『Code 39条形码介绍』 code39条码能表示字母、数字和其它一些符号共43个字符&#xff1a;A -Z, 0-9, -.$/ %, space等&#xff0c;其主要特点如下&#xff1a;  ◆条码的长度是可变化的   ◆通常用“*”号作为起始、终止符   ◆校验码不…

mysql那些事(6) WHERE条件 字符串的引号

前言&#xff1a;所谓的坑&#xff0c;两个意思&#xff0c;一个是软件本身的bug&#xff0c;一个是使用者常犯的错误。 phper在日常开发中经常和mysql打交道。特别是在没有分层的中小应用中&#xff0c;phper开发要关注sql语句的实现。 入正题&#xff0c;上建表语句&#xff…

mysql延迟关联为什么快_MySQL 覆盖索引与延迟关联详解

本期来谈谈覆盖索引与延迟关联。在此之前&#xff0c;我们先简单建立一个订单表 Orders 用于举例说明。表中共包含 3 个字段&#xff1a;idintproduct_idnameCREATETABLEordersidint10NOTNULLCOMMENT订单 IDproduct_idint10DEFAULTNULLCOMMENT商品 IDnamevarchar255CHARACTERSE…

学一下Unix/C啊

发信人: Winmine (挖地雷), 信区: Career_Upgrade标 题: Oracle(原bea)研发中心Tuxedo组&#xff0c;招Unix/C人才发信站: 水木社区 (Mon Apr 11 13:28:06 2011), 站内工作地点在中关村软件园&#xff0c;西二旗附近。要求至少2年相关工作经验----但一般来说&#xff0c;除非您…

Qt使用信号与槽时出现的错误“Incompatible sender/receiver arguments”

在学习使用qt的过程中&#xff0c;没有好好的去了解信号与槽的机制&#xff0c;导致出现了这么一段代码&#xff1a; connect(timer1, SIGNAL(timeout()), this, SLOT(exeMonitor(QString))); 在编译时没有出现错误&#xff0c;但当触发该信号时输出框显示&#xff1a; 即&…

mysql通过函数完成10的阶乘_请使用函数的递归调用编写求阶乘的函数,并计算1!+2!+3!+4!+5!...

点击查看请使用函数的递归调用编写求阶乘的函数,并计算1!+2!+3!+4!+5!具体信息 答:include "stdio.h" int fac(int k) { if(k==1) return 1; else return k*fac(k-1); }/*递归求阶乘*/ void main() { int i=1; for(i;i=5;i++) { fac(i);/*调用函数计算阶乘*/…

《大话数据结构》第9章 排序 9.3 冒泡排序(上)

9.3.1 最简单排序实现 无论你学习哪种编程语言&#xff0c;在学到循环和数组时&#xff0c;通常都会介绍一种排序算法来作为例子&#xff0c;而这个算法一般就是冒泡排序。并不是它的名称很好听&#xff0c;而是说这个算法的思路最简单&#xff0c;最容易理解。因此&…

简易js模板引擎

前阵子参考别人的文章自己理解了一下模板引擎的实现&#xff0c;虽然是照着敲了一边&#xff0c;但是自己也加深了理解吧。 原文链接 自己的代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><ti…

五款常用邮件管理系统评测

以邮件为主要沟通媒介的外贸企业&#xff0c;对邮件的依赖性可以说已经达到不能或缺的地步。软件厂商们深谙这一定律&#xff0c;为外贸企业提供了种类庞大的软件系统以供选择。以下笔者抽出其中五款使用较为普遍的邮件管理系统&#xff0c;根据其性能、系统稳定性、性价比等方…

for each java_Java 实例 - for 和 foreach循环使用

Java 实例 - for 和 foreach循环使用for 语句比较简单&#xff0c;用于循环数据。for循环执行的次数是在执行前就确定的。语法格式如下&#xff1a;for(初始化; 布尔表达式; 更新) {//代码语句}foreach语句是java5的新特征之一&#xff0c;在遍历数组、集合方面&#xff0c;for…

EditPlus 注册码在线生成

虽然editplus现在不常用&#xff0c;但是它轻便&#xff0c;我还是很喜欢的&#xff0c;推荐一个注册码生成器&#xff0c;真是好好用 http://www.jb51.net/tools/editplus/ 点击链接输入自己想要的用户名&#xff0c;就能自动生成了&#xff0c;相当方便。转载于:https://www.…