近10年最强的50本计算机图书名单

美国知名图书频道BookPool组织权威专家评选出近十年计算机领域最具影响力的50本书籍,涵盖设计模式、编程实践、网络安全等多个方向,如《设计模式》、《人月神话》等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个排名好像有些时日了,我只是想起一个记录的作用!

 

美国著名图书频道Book Pool集结最权威的62位作者评选出了最近10年计算机专业图书中的50强(

光这62位作者阵营就非常强大,我们熟悉的就有:

Francesco Balena(Microsoft.NET框架程序设计,Visual Basic.NET语言描述作者)
Bert Bates(Head First Design Patterns作者)
Joshua Bloch(Effective Java作者)
Kalen Delaney(Microsoft SQL Server 2000技术内幕作者)
Stephen C. Dewhurst(C++ Gotchas作者)
Bill Evjen(Visual Basic.NET宝典作者)
Dino Esposito(构建Web解决方案—应用ASP.NET和ADO.NET、Microsoft .NET XML程序设计作者)
Andy Hunt(Pragmatic Programmer系列图书作者)
Gary McGraw(Exploiting Software: How to Break Code作者)
Steve McConnell(Code Complete作者)
Christian Nagel(Enterprise Services with the .NET Framework作者)
Arnold Robbins(Linux程序设计作者)
Tim O'Reilly(O'Reilly媒体集团创始人)
Chris Sells(Windows Forms程序设计、.NET本质论作者)
Stephen Walther(设计模式--可复用面向对象软件的基础作者)
John Vlissides(ASP.NET揭秘作者)

由此可见,这次评选的权威性!

 

NO.1   
设计模式:可复用面向对象软件的基础

Design Patterns: Elements of Reusable Object-Oriented Software


 NO.2   
人月神话

The Mythical Man-Month: Anniversary Edition
 
NO.3   
TCP/IP详解卷1:协议

TCP/IP Illustrated, Volume 1: The Protocols


 NO.4   
编写安全的代码

Writing Secure Code, Second Edition
 
 
NO.5    
UNIX环境高级编程

Advanced Programming in the UNIX Environment, 2nd Edition
 
 NO.6   
代码大全

Code Complete, 2nd Edition 
 
NO.7   
C程序设计语言

The C Programming Language, 2nd Edition 
 

NO.8  
计算机程序设计艺术

Art of Computer Programming Volumes 1-3 Boxed Set 
 
NO.9   
Effective C++

Effective C++: 55 Specific Ways to Improve Your Programs and Designs, 3rd Edition
 
 NO.10   
Transact-sql权威指南

The Guru's Guide to Transact-SQL  
 
NO.11   
Perl语言编程

Programming Perl, 3rd Edition 
 

NO.12   
编程珠玑

Programming Pearls, 2nd Edition 
 
NO.13   
程序员修炼之道

Pragmatic Programmer: From Journeyman to Master 
 

NO.14   
解析极限编程

Extreme Programming Explained: Embrace Change, 2nd Edition 
 
NO.15   
Don't Make Me Think

Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition 
 

NO.16   
ASP.NET服务器空间与组件开发

Developing Microsoft ASP.NET Server Controls and Components 
 
NO.17   
信息安全工程

Security Engineering: A Guide to Building Dependable Distributed Systems 
 

NO.18   
TCP/IP路由技术(第一卷)

Routing TCP/IP, Volume 1 
 
NO.19   
The Design of Everyday Things 

 

 NO.20   
Joel说软件

Joel on Software 
 
NO.21 
Internet路由结构

Internet Routing Architectures, 2nd Edition
 
 NO.22   
网络信息安全的真相

Secrets & Lies: Digital Security in a Networked World 
 
NO.23   
程序设计实践

The Practice of Programming 


 NO.24  
网站重构

Designing with Web Standards 
 
NO.25  
人件

Peopleware: Productive Projects and Teams, 2nd Edition 
 

NO.26   

The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography 
 
NO.27   
WINDOWS程序设计

Programming Windows, 5th Edition 

 
 NO.28   

Mac OS X: The Missing Manual, Panther Edition
 
 
NO.29   

The Elements of Style, 4th Edition 
 

NO.30   
IT大败局

In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters 
 
NO.31  
Godel, Escher, Bach: An Eternal Golden Braid


 NO.32   
Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services 
 
NO.33   
Head First Java, 2nd Edition 
 

NO.34   
算法导论

Introduction to Algorithms, 2nd Edition 
 
NO.35   
A First Look at SQL Server 2005 for Developers


 NO.36   
Core Java 2, Volume 1: Fundamentals, 7th Edition 
 
NO.37  
UML精粹:标准对象建模语言简明教程

UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3rd Edition
 
 NO.38   

Expert Oracle, Signature Edition (One-on-One) 
 
NO.39   
黑客大曝光

Hacking Exposed: Network Security Secrets & Solutions, 5th Edition 
 

NO.40   

Microsoft SharePoint: Building Office 2003 Solutions 
 
NO.41   
EFFECTIVE JAVA中文版

Effective Java Programming Language Guide
 
 NO.42  

Joe Celko's SQL for Smarties : Advanced SQL Programming, 3rd Edition 
 
NO.43   
企业应用架构模式

Patterns of Enterprise Application Architecture 
 

NO.44 

Group Policy, Profiles, and IntelliMirror for Windows 2003, Windows XP, and Windows 2000 
 
NO.45   
应用密码学

Applied Cryptography: Protocols, Algorithms, and Source Code in C, 2nd Edition 
 

NO.46   
重构--改善既有代码的设计

Refactoring: Improving the Design of Existing Code (The Addison-Wesley Object Technology Series) 
 
NO.47   
C#编程语言详解

The C# Programming Language 


 NO.48   
ADO.NET实用指南

Pragmatic ADO.NET: Data Access for the Internet World 
 
NO.49   
计算机网络(第四版)

Computer Networks, 4th Edition
 
 NO.50   
DNS与BIND

DNS and BIND, 4th Edition 

参考文献:

http://www.programfan.com/blog/article.asp?id=7618
http://www.dearbook.com.cn/subject/top50/

 

 

 

 

要在终端上以几何形式打印文件中的图,可以使用 ASCII 字符来绘制图形表示。以下是一种可能的方法: 1. **定义一个绘图函数**:这个函数会根据图的数据结构生成一个简单的文本表示。 2. **确定节点位置**:为了简化,可以假设节点均匀分布在终端窗口中。 3. **连接节点**:根据路径数组,用线条或箭头连接节点。 以下是一个示例代码,展示了如何实现这一功能: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define maxSite 100 #define infinite 10000 // 定义存放路径权值的结构体 typedef struct { int path; } ArcCell, AdjMatrix[maxSite][maxSite]; // 定义景点结构体 typedef struct { char placeName[15]; // 景点名称 int placeNo; // 景点编号 char placeInfo[100]; // 存放景点信息 } place; // 定义校园地图 typedef struct { place placeArray[maxSite]; // 景点数组 AdjMatrix pathArray; // 路径数组 int placeNum; // 景点数量 int pathNum; // 路径总数量 } Graph; // 初始化校园地图 Graph InitGraph() { Graph G; int i, j; G.placeNum = 10; G.pathNum = 12; for (i = 0; i < G.placeNum; i++) G.placeArray[i].placeNo = i; // 对景点进行编号 strcpy(G.placeArray[0].placeName, "杭电南大门"); strcpy(G.placeArray[0].placeInfo, "学校标志性建筑,有亚洲最宽校门之称"); strcpy(G.placeArray[1].placeName, "行政楼"); strcpy(G.placeArray[1].placeInfo, "学校领导的办公地点和学生事务的办理地点"); strcpy(G.placeArray[2].placeName, "计算机学院"); strcpy(G.placeArray[2].placeInfo, "计算机学院是在1980设立的本科计算机专业的基础上发展起来的,在长期的办学过程中,学院始终致力于培养德智体美全面发展、具有创新精神和实践能力的高素质人才。"); strcpy(G.placeArray[3].placeName, "电子信息学院"); strcpy(G.placeArray[3].placeInfo, "电子信息学院(集成电路科学与工程学院)成立于2000,是学校规模最大、办学实力最强、历史最悠久的学院之一"); strcpy(G.placeArray[4].placeName, "问鼎广场"); strcpy(G.placeArray[4].placeInfo, "三柱鼎立,相依相契,三柱环抱,各有指代。一柱喻示古远,思接滥觞,薪火传承;一柱标明现代,铅火嬗变,光电交汇;一柱直指未来,球旋地转,日新月异。"); strcpy(G.placeArray[5].placeName, "图书馆"); strcpy(G.placeArray[5].placeInfo, "藏书丰富,学霸聚居地"); strcpy(G.placeArray[6].placeName, "学生活动中心"); strcpy(G.placeArray[6].placeInfo, "学生活动场所,活动丰富精彩"); strcpy(G.placeArray[7].placeName, "第三食堂"); strcpy(G.placeArray[7].placeInfo, "解决学生一日三餐的地方"); strcpy(G.placeArray[8].placeName, "后勤大厅"); strcpy(G.placeArray[8].placeInfo, "处理饭卡等事务,满足同学们的日常需要"); strcpy(G.placeArray[9].placeName, "体育馆"); strcpy(G.placeArray[9].placeInfo, "杭州亚运会举办场馆"); for (i = 0; i < G.placeNum; i++) for (j = 0; j < G.pathNum; j++) { G.pathArray[i][j].path = infinite; // 先将每个结点间的路径初始化为无穷大 } G.pathArray[0][1].path = 200; // 正大门和行政楼相差200m G.pathArray[0][2].path = 500; // 正大门和计算机学院相差500m G.pathArray[0][4].path = 600; // 正大门和问鼎广场相差600m G.pathArray[1][3].path = 200; // 行政楼和电子信息学院相差200m G.pathArray[1][9].path = 1000; G.pathArray[2][5].path = 150; // 计算机学院和图书馆相差150m G.pathArray[3][5].path = 100; // 电子信息学院和图书馆相差100m G.pathArray[4][5].path = 100; // 问鼎广场和图书馆相差100m G.pathArray[5][6].path = 300; // 图书馆和学生活动中心相差300m G.pathArray[5][8].path = 500; // 图书馆和27号楼相差500m G.pathArray[6][7].path = 50; // 学生活动中心和食堂相差50m G.pathArray[6][8].path = 50; // 学生活动中心和27号楼相差50m G.pathArray[8][9].path = 500; // 27号楼和32号楼相差100m for (i = 0; i < G.placeNum; i++) // 无向图相反方向路径长度相同 for (j = 0; j < G.placeNum; j++) G.pathArray[j][i].path = G.pathArray[i][j].path; return G; } // 绘制图的函数 void DrawGraph(Graph *G) { const int width = 80; // 假设终端宽度为80字符 const int height = 20; // 假设终端高度为20行 char grid[height][width + 1]; // 初始化网格 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { grid[y][x] = ' '; } grid[y][width] = '\0'; // 结束字符串 } // 放置节点 for (int i = 0; i < G->placeNum; i++) { int x = (i % 10) * (width / 10); int y = (i / 10) * (height / 10); snprintf(grid[y] + x, 10, "%s", G->placeArray[i].placeName); } // 连接节点 for (int i = 0; i < G->placeNum; i++) { for (int j = 0; j < G->placeNum; j++) { if (G->pathArray[i][j].path != infinite) { int x1 = (i % 10) * (width / 10); int y1 = (i / 10) * (height / 10); int x2 = (j % 10) * (width / 10); int y2 = (j / 10) * (height / 10); // 画线 if (y1 == y2) { for (int x = min(x1, x2); x <= max(x1, x2); x++) { grid[y1][x] = '-'; } } else if (x1 == x2) { for (int y = min(y1, y2); y <= max(y1, y2); y++) { grid[y][x1] = '|'; } } else { // 斜线或其他复杂情况 // 这里简单处理,只画一条直线 int dx = (x2 > x1) ? 1 : -1; int dy = (y2 > y1) ? 1 : -1; while (x1 != x2 || y1 != y2) { grid[y1][x1] = '*'; x1 += dx; y1 += dy; } } } } } // 打印网格 for (int y = 0; y < height; y++) { printf("%s\n", grid[y]); } } int main() { Graph G = InitGraph(); DrawGraph(&G); return 0; } ``` ### 解释 1. **初始化网格**:创建一个二维字符数组 `grid` 来表示终端窗口,并将其所有元素初始化为空格。 2. **放置节点**:根据节点编号计算其在网格中的位置,并将节点名称写入相应位置。 3. **连接节点**:遍历路径数组,如果两个节点之间存在路径,则在网格中画出相应的连线。这里处理了水平线、垂直线和斜线的情况。 4. **打印网格**:逐行打印网格中的字符,形成最终的图形表示。 这个示例代码只是一个基本的实现,可以根据实际需求进一步优化和扩展。例如,可以添加更多的样式选项,或者更复杂的布局算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值