英文版:Applied Machine Learning and AI for Engineers — Solve Business Problems That Can't Be Solved Algorithmically ISBN:9781492098058 中文版:机器学习与人工智能实战——基于业务场景的工程应用 ISBN:9787302635239 原著:Jeff Prosise 翻译:周靖
过去20年,很多事情都发生了变化。为了好玩,我有时会拿起我那本2001年的《Microsoft C# Step By Step》第一版,并感慨自己当年的天真无邪。当然,C#当时达到了完美编程语言的巅峰。C#和.NET Framework在开发界引起了轰动,其反响一直持续到今天。现在,非但没有泯然众矣,反而在开发界的地位变得越来越重要。C#和.NET并不像2001年的反对者最初所叫嚣的那样是一种单一的平台方法,而是逐渐证明自己是一种完整的多平台解决方案——无论你是为Windows、macOS、Linux还是Android构建应用程序。此外,C#和.NET已经证明自己是许多基于云的系统的首选运行库。没有它们,Azure怎么可能这么火?
过去,大多数常用编程语言只是时不时地更新一下,往往相隔数年。以Fortran为例,会看到名为Fortran 66、Fortran 77、Fortran 90、Fortran 95、Fortran 2003、Fortran 2008和Fortran 2018的标准。这就是过去55年中的七次更新。虽然这种相对缓慢的变化周期有利于稳定性,但也可能导致停滞不前。问题在于,开发人员必须解决的问题的性质变化很快,他们所依赖的工具最好能跟上步伐,这样才能开发出有效的解决方案。Microsoft .NET提供的正是这样一个不断发展的框架,C#也会相应地更新,从而最好地利用平台的优势。所以,和Fortran相比,C#自首次发布以来经历了快速迭代,仅过去五年内就有六个版本问世,2022年甚至会再次发布C#的一个新版本。C#语言仍然支持20多年前写的代码,但通过不断对语言进行补充和增强,现在能用更优雅的代码和更简洁的构造来创建解决方案。出于这个原因,本书也要定期进行更新,现在已经是第10版了!
下面列出了C#的进化简史:
虽然Micrsofot Windows是运行C#应用程序最重要的平台,但现在也可通过.NET运行时在其他操作系统(包括Linux)上运行用C#写的代码。这使程序更容易在多种环境中运行。另外,Windows支持高度交互性的应用程序,它们可以进行数据共享和协作,还可以连接云服务。Windows最引人注目的是对UWP(Universal Windows Platform,通用Windows平台)应用的支持。这种应用设计在任何Windows 10或Windows 11设备上运行,无论这些设备是全功能的桌面系统、笔记本和平板,还是资源有限的智能手机和物联网(IoT)设备。熟悉C#的核心特性后,下一步就是掌握如何开发能在所有这些平台上运行的应用。
云已成为许多系统架构中的一个重要元素——从大型企业应用,到在便携式设备上运行的移动应用——所以我决定在本书最后一章重点讨论这方面的开发。 Visual Studio开发环境使这些特性变得很容易使用,大量新向导和增强显著提升了开发人员的生产力。写作这本书给我带来了许多乐趣,希望你的阅读亦是如此!
Posted on by admin — Leave a comment下载Introduction-to-the-Design-and-Analysis-of-Algorithms-3rd-Edition部分习题、提示和答案1-4章 (PDF)
利用假日充电的机会,翻译了《算法设计与分析基础(第3版)》(Introduction to the Design and Analysis of Algorithms 3rd Edition)的部分 习题答案 ,目前进行到第4章。后续内容不知道什么完成。所以先放出来。
仅供参考,并请提出修正意见。感激不尽。
示例效果:
原书ISBN: 978-0132316811
Posted on by admin — Leave a comment两年里利用业余时间断断续续完成了本书翻译(感谢编辑大人的不杀之恩)。原因不是本书无趣,而是因为太有趣,仅仅是时间不够而已。真的是一本C++入门的好书。语言精炼,且前后呼应。你看到了一个不太理解的术语/概念。没问题,后面肯定有对它的详尽解释(而且是用你很容易明白的话)。
原书基于Visual Studio 2015写作(还记得我花了2年时间吗)。后来Visual Studio 2017问世,所以在书中添加了对Visual Studio 2017的支持。不想用微软的IDE?没问题,译者这里推荐一些IDE:CodeLite,Dev C++,Eclipse,NetBeans……实在太多了。这里不妨给出链接:
本书是语言参考书,遵循核心C# Language 7.0 Specification。为了帮助读者理解各种C#构造,书中用大量例子演示了每一种特性,而且为每个概念都提供了相应的指导原则和最佳实践,以确保代码能顺利编译、避免留下隐患,并获得最佳的可维护性。为增强可读性,所有代码均进行了特殊格式处理,而且每章内容都用思维导图来概括。
==========勘误开始==========
P.52第一行:这样定义的number变量只有if语句内部的作用域,在外部不可用。
改成:这样定义的number变量在if语句的true和false结果中都可用,甚至在if语句的外部也可用。
或者:这样定义的number变量除了有if语句内部的作用域,在外部也可用。
译注:“外部也可用”,这个外部也是有边界的。边界就是包含if的那个块的范围。例如:
{
if (double.TryParse(input,
out
double number)) {
number在这里可用
}
else {
number在这里可用
}
. . .
number在这里可用
}
number在这里不可用
=========以下提交时无误,出版社改错 ============
P.132 输出5.1,第4行输出应为“Hello Inigo Montoya! Your initials are I. M.”。
P.235 代码清单7.13,private void Run()改为public void Run()
P.11 代码清单1.4 图注“方法说明”改为“方法声明”
==========勘误结束==========
关于《Essential C# 7.0》:
中文版ISBN:
9787111625681
英文版ISBN:
9781509303588
原著:Mark Michaelis
技术编辑:Eric Lippert
翻译:周靖
本书是深受师生欢迎的优秀C++入门教材。作者结合自己多年的教学经验精心设计并编撰了本书内容。采用了很多便于巩固所学知识的设计,例如各章开头的小节总览,书中随处可见的小结框、编程提示和编程陷阱,各章结尾的小结、习题、编程练习和编程项目等。这些非常适合初学者掌握重要的编程概念。
全书共18章,8个附录。在讲解C++基础知识之后,直接引导学生深入函数、I/O流、类、控制流程、命名空间、数组、字符串、指针和动态数组、递归、模板、指针和链表、派生类、异常以及标准模板库。
本书基于2015年出版的 《C++入门经典(第9版)》 ,第10版采用和第9版相同的体例。保留第9版全部内容,但进行以下修订。
用过第9版的教师可沿用以前的教案,几乎不需要任何改动。
==========勘误开始==========
==========勘误结束==========
关于《C++入门经典(第10版)》:
中文版ISBN:
9787302486763
原书名:《Problem Solving with C++, 10th Edition》 ISBN:
9780134448282
原著:Walter Savitch
翻译:周靖
中国亚马逊购买>>
配套资源和试读PDF >>
ys168网盘
百度网盘
Continue reading
《Visual C#从入门到精通(第9版)》中文版资讯、勘误和试读-2018年底出版
此版本非我翻译,未以任何形式参与。
好吧,我承认我标题党了。但残酷的事实是,Jeffrey已亲自承认不会再写第5版了。
(虽然个人认为第4版已解决了目前绝大多数底层问题。未跟进的大多是语法糖。)
Jeffrey的最新作品(完全转移到Azure云计算平台了): http://azure.com/training
Posted on by admin — 2 Comments
Amazon.cn购买>>
JD.com购买>>
China-pub购买>>
网盘下载本书配套资源和ebook>>
和上一版的区别
:
原文
译文
本书基于《CLR via C#》第3版,在保持上一版精华内容的同时进行了大量修订,并添加了大量关于C# 5.0新特性的内容。翻译这一版的过程中,我对上一版也进行了精校和勘误,其中许多勘误和改进意见都是热心读者提交的。在此要对他们表示衷心感谢!他们包括但不限于:
56xue,Castor,DamnnnSure,JeffFan,Jeffrey You,Kenny Wang,LuckyDogFace,Neil,Titus,charlesgeorge,dream-like,fanfan,frank,hongkunjiang,huihui,kman,liu888bingsong,negy_liang,ooooo84,quark,sd,skyiv,wu,wukun0502,wzhou,yeahe83,北纬49°的雨,笨笨,不世出的CLR小白,大支豬與小蘋果,何苦,来客心动,飘荡,飘飘白云,气万象千,千年一梦,如水的人生,施博,酸菜鱼,永远的阿哲
更新历史:
2014.6.16 提交编辑和审阅(预计1个半月)
2014.6.23 更新和新增了试读章节
2014.11.15 本书上市
大家好,我们又见面了。谁预见到了今天啊?哈哈,我就预见到了!一旦步入婚姻的殿堂,就相当于进了“土拨鼠日”。如果还没有看过那部电影,就去看看吧。看了之后,就会明白为什么自己老是犯同样的错误。当Jeff说他不再写书的时候,我就知道这是一个上瘾之人开的空头支票。Jeff不可能停止写书。就在今天,我们还在说起他“绝对”不可能写的另一本书呢(实际情况是,有一章已经在写了)。写书已深入到他骨子里面去了。千里马生来就是要奔跑的,Jeff生来就是要写作的。
Jeff太有规律了。他就是离不开硬盘里的那些小小的0和1。忽视它们是不可能的。凌晨3点,我们睡梦正酣的时候,Jeff的生物钟就在催促他起床了(巧合的是,我们4岁大的儿子也恰好在这个时候爬到我们的床上。两爷子的行为模式我都理解不了啊)。一股神秘的力量促使Jeff的大脑自动释放出解决方案、头脑风暴和臭虫之类的东西,迫使他跑到办公室把这些东西从脑袋里倒腾出来。而我们呢,则安心地翻个身继续呼呼大睡,知道Jeff会解决那些问题——就像一个神秘的网络超级英雄,防止线程又成为薄弱环节[1]。
但积累这些知识供自己使用,这对Jeff来说远远不够。好东西不该独享。所以必须把它们传播开来,必须把它们写下来。知识就像电波,有心人能接收得到。这就是他为你所做的,亲爱的读者,是他对Microsoft技术热爱的一份明证。
本书还有另一层意义在里面。Jeff每次绕着太阳“公转”一圈,都会变得更老一些。经过多年的积累,他也学着“向后看”了。由于看事情的方式变得更成熟,他重写了讲反射的那一章。或许你也应该跟他一起回顾一下这个主题。可以学到怎样让代码自个儿询问关于代码的事儿,进而更深入地思考为什么反射要那样工作。穿上便服,找一把舒服的皮椅子坐下,花些时间想想自己的代码,以及它们生命中更深层次的意义。
本书还讲了一样有趣的东西,那就是异步/等待[2]。和我老公以前鼓捣过一阵子的AsyncEnumerator相比,这个东西显然进步了不少。哎,我还以为今后离不开它了呢!事实上,虽然他跟我讲了好多次AsyncEnumerator,但这个东西根本就没有在我的脑子里“阻塞”嘛。于是我偷偷地想,如果知道了什么是enumerator的话,也许就能明白他讲的是啥了。于是我查了一下维基百科,发现enumerator是人口普查员的意思。这一章难道是讲人口普查员怎样协调工作的事儿?那就太浪费纳税人的钱了吧!不过,我相信它在计算机里面的意义比我查到的好。Jeff和微软的团队一起工作,将异步/等待打磨得很完美。你现在通过这本书就能舒舒服服地享受到他们的成果了。我建议你好好读一下。嗯,要顺着读。[3]
本书的另一个重头戏是我感觉最兴奋的。希望你们都来看看关于WinRT的内容。这个术语太书呆子气了,我的理解就是“马上为我无敌帅气的平板搞一些很酷的应用出来!”。你猜得没错,新的Windows Runtime就是围绕无敌帅气的触摸屏展开的。孩子喜欢小鸟飞向小猪,我则喜欢跟鲜花有关的东西,而你完全可以用平板做其他事情。没有做不到,只有想不到!去搞 一些“奇思妙想非常牛掰”(Wonderful Innovative Nifty Really Touchy,WinRT)的东西出来吧。就当是为了我,好好看看这一章吧。否则的话,我对Jeff和他无休止的写作事业可能真会失去耐心了,会把他关到一间只有针头线脑[4],没有电的小黑屋里面。你们程序员看着办吧,是用WinRT写一些很酷的应用,还是再也没有Jeff的新书看!
总之,在你们的力挺之下,Jeff的又一部大作诞生了。我们的家庭貌似又可以回归正常状态了。但真的正常吗?或许他不停写书才是真的正常吧。
让我们耐心等待下一本书的神秘召唤。
Kristin Trace(Jeffrey的妻子)
2012年10月
[1] saving the thread from becoming just another loose end,直译就是“防止线头儿又松了”。——译注
[2] async和await是C#的两个关键字,允许用顺序编程模型执行异步操作。——译注
[3] Kristin用“sequentially”一词吐槽顺序编程模型。——译注
[4] Kristin又在吐槽“thread”了。——译注
——2014,北京
《 CLR via C# 》第4版术语:
(S)Byte:等同于“SByte和Byte”,这是作者喜欢的说法。类似的还有(U)Int16,(U)Int32,(U)IntPtr等
AppDomain:(保留原文)
Compute-Bound和I/O-Bound:计算限制和I/O限制(一个操作如果因为处理器和I/O的限制而不得不等待,就称为计算限制或I/O限制的操作)
Windows Store app:Windows Store应用(文档中翻译成“Windows应用商店应用”,显得过于冗长)
action method:操作方法
antecedent task和continuation task:前置任务和延续任务
arity:元数。在计算机编程中,一个函数或运算(操作)的元数是指函数获取的实参或操作数的个数。它源于像unary(arity=1)、binary(arity=2)、ternary(arity=3)这样的单词。
asynchronously synchronization:异步地同步(同步对资源的访问,但以异步方式进行,即不阻塞线程)
atomic:原子性(读或写都是一次完成,别的线程看不到中间状态,就说这种读写是原子性的)
attribute:特性(以文档为准)
awaiter:等待者(调用GetAwaiter所返回的对象)
bit flag:位标志
block:阻塞(停下来等着)
callback:回调(回调方法简称为“回调”)
calling thread:调用线程(发出调用的线程,也称主调线程)
capture:捕捉(文档中主要用“捕捉”,偶尔用“捕获”)
cast:转型(不用文档的“强制类型转换”是因为太冗长)
compact:压缩(但此压缩非彼压缩,这里只是按照约定俗成的方式将compact翻译成“压缩”。不要以为“压缩”后内存会增多。相反,这里的“压缩”更接近于“碎片整理”。事实上,compact正确的意思是“变得更紧凑”。但事实上,从上个世纪80年开始,人们就把它看成是compress的近义词而翻译成“压缩”,以讹传讹至今)
contract:文档的翻译非常混乱,包括协定、协议、合约、约定和契约等;本书使用“协定”
covariance和contravariance:协变和逆变(协变是指在要求使用一个类型的地方,能改为使用它的基类;逆变则是指在要求使用一个类型的地方,能改为使用它的派生类。C#用关键字in表示逆变量,用在输入位置;用out表示协变量,用在输出位置。详情参见12.5节)
culture:语言文化(而不是文档中的“区域性”)
cyclical reference:循环引用(我引用你,你引用我)
dispatch:派发
declarative:声明性(文档如此,个人更喜欢“宣告式”)
dispose:文档翻译成“释放”。但“dispose一个对象”真正的意思是:清理或处置对象中包装的资源(比如它的字段引用的对象),然后等着在一次垃圾回收之后回收该对象占用的托管堆内存(此时才释放)。为避免误解,本书将dispose翻译成“清理”,偶尔也会保留原文。
entry:记录项(而不是“条目”、“入口”)
flush:文档翻译成“刷新”,本书保留原文。其实flush在技术文档中的意思和日常生活中一样,即“冲洗(到别处)”。例如,我们会说“冲厕所”,不会说“刷新厕所”
formatter:格式化器(文档是“格式化程序”)
get accessor method:get访问器方法(取值函数或getter)
guideline:设计规范
handler:处理程序(文档如此,个人不喜欢“程序”二字)
helper method:辅助方法
host:寄宿(动词)或宿主(名词)
invoke和call:都翻译成“调用”,但两者是有区别的。执行一个所有信息都已知的方法时,用call比较恰当。但在需要先“唤出”某个东西来帮你调用一个信息不明的方法时,用invoke就比较恰当。阅读关于委托和反射的章节时,可以更好地体会两者的区别
literal:直接在代码中书写的值就是literal值,比如字符串值和数值(”Hello”和123)。翻译成什么的都有,包括直接量、字面值、文字常量、常值(台译)等。但实际最容易理解的还是英文原文。本书采用“字面值”
marshal:封送
metadata:元数据
mutex:互斥体
native method:本机方法(其实就是非托管方法)
native:本机(文档如此,个人更喜欢“原生”,比如原生类库、原生C/C++代码、原生堆。一切非托管的,就是native的)
operand:操作数(要操作/运算的目标)
operator:操作符(而不是文档中的“运算符”)
overload和override:重载和重写
preempt:抢占
primitive types:基元类型(文档如此,不是“基本类型”。可以在代码中使用的最简单的构造就称为“基元”,其他构造都是它们复合而成的)
provider:提供程序(文档如此,个人不喜欢“程序”二字)
raise an event:引发事件
recursion count和recursive lock:递归计数和递归锁(可重入的锁就是递归锁,重入的次数就是递归计数)
scalability:伸缩性(在少量时间里做更多工作的能力,就是所谓的“伸缩性”。作为一个伸缩性好的服务器,理论上应该CPU越多,一个耗时操作所需的时间就越短。通俗地说,在多个CPU之间并行执行,执行时间将根据CPU的数量成比例地缩短。)
self-hosted:自寄宿(应用程序的进程自己容纳CLR,就是所谓的自寄宿)
semaphore:信号量
set accessor method:set访问器方法(赋值函数或setter)
side effect:副作用
singleton:单实例(例如,如果某类型在每个AppDomain中只能有一个实例,它就是单实例类型)
spinning:自旋(线程不是阻塞,而是原地“打转”,浪费CPU时间。但在用于保护执行得非常快的代码区域时性能比较好)
string interning:字符串留用(而不是文档中的“字符串拘留”)
synchronous和asynchronous:同步和异步。同步意味着一个操作开始后必须等待它完成;异步则意味着不用等它完成,可立即返回做其他事情。不要将“同步”理解成“同时”。同步意味着不能同时访问一个资源,只有在你用完了之后,我才能接着用。在多线程编程中,“同步”(Synchronizing)的定义是:当两个或更多的线程需要存取共同的资源时,必须确定在同一时间点只有一个线程能存取该资源,而实现这个目标的过程就称为“同步”。切记不可将同步理解成能够“同时访问一个资源”。
tap(点击),press and hold(长按),slide(滑动),swipe(轻扫),turn(转动),pinch(收缩)和stretch(拉伸):Windows 8的各种触摸“手势”
throw an exception:抛出异常(而不是文档中的“引发异常”)
unwind:一般翻译成“展开”,但这并不是一个很好的翻译。wind和unwind源于生活。把线缠到线圈上称为wind;从线圈上松开称为unwind。同样地,调用方法时压入栈帧,称为wind;方法执行完毕,弹出栈帧,称为unwind
volatile:易变(文档将volatile翻译为“可变”。其实它是“短暂存在”、“易变”的意思,因为可能有多个线程都对这种字段进行修改,本书采用“易变”)
work item和worker thread:工作项和工作者线程(线程池术语。工作项是指要由一个线程池线程调用的方法,代表线程实际要做的工作;处理工作项的线程称为工作者线程。工作项被放到一个队列中,工作者线程将工作项从队列中取出并处理)
《 CLR via C# 》第4版中文版勘误
第 1-n 次印刷(n目前等于7):(sorry对出版社的工作效率无力吐槽,勘误可能并未反映到后续印刷中)
1. 49 页表 2-4 中部,第 1 列的 FileVersion 改成 Version ,第 3 列的 System.Reflection.AssemblyFileVersionAttribute 改成 System.Reflection.AssemblyVersionAttribute 。感谢 dream-like 。
AssemblyFileVersion 和 AssemblyVersion 的区别在于,前者为 Win32 文件版本资源使用特定版本号,该版本号不一定要和程序集的版本号相同。后者自然是指定程序集的版本号。
更具体地说,其他程序集在引用你的程序集时,引用的是 AssemblyVersion 。这个版本号变了,其他程序集就必须更新对你的程序集的引用。 AssemblyVersion 是必须的。我个人用的格式是 major . minor 。例如:
[assembly: AssemblyVersion(“1.0”)]
AssemblyFileVersion
则用于部署,可以每部署一次都递增。安装程序用的就是这个版本号。总之,用它标记
AssemblyVersion
不变,但每次
build
都要生成一份的程序集。在
Windows
中,可以用文件属性对话框查看该版本号。尽量让
MSBuild
自动生成。
AssemblyFileVersion
是可选的。不指定就用
AssemblyVersion
。但两者完全可以不一样。我个人用的格式是
major
.
minor
.
revision
.
build
。
revision
代表不同的开发阶段,比如
Alpha
,
Beta
,
RC
、
RTM
、
SP
和
hot fix
。例如:
[assembly: AssemblyFileVersion("1.0.3100.1242")]
。
2. 507 页脚注,删除“调用 R ”中的“ R ”。
3. 405 页到 406 页。删除“ RuntimeWrappedException 类含有一个 Object 类型的一个 CLR 相容的异常类型”整句话。感谢 dream-like 。
4. 111 页删除最后一整段。因为重复。感谢 dream-like 。
5. 162 页方框。删除第 3 行 – 第 4 行整个括号中的内容。再删除最后一句话“归根到底。。。”。感谢 dream-like 。
Anany Levitin著《算法设计与分析基础(第3版)》(Introduction to the Design and Analysis of Algorithms 3rd Edition)习题、提示和答案 2022-05-01 Fluency6 – 通晓信息技术:技能、概念与能力(第6版) 2022-03-10