| 前卫的意义 — Modern C++ Design中文版《C++ 設計新思維》译序,承蒙侯捷先生允许,全文转载于此。 一般人对C++ templates的粗浅印象,大约停留在「容器(containers)」制作上。稍有研究则会发现,templates衍生出来的C++ Generic Programming(泛型编程)技术,在C++ 标准程式库中已经遍地开花结果。以STL为重要骨干的C++标准程式库,将templates广泛运用于容器(containers)、演算法(algorithms)、仿函式(functors)、配接器(adapters)、配置器(allocators)、迭代器(iterators)上头,无处不在,无役不与,乃至于原有的class-based iostream都被改写为 template-based iostream。 彻底研究过STL源码(SGI版本)的我,原以为从此所有C++ templates技法都将不出我的理解与经验之外。但是《Modern C++ Design》在在打破了我的想法与自信。这本书所谈的template技巧,以及据以实作出来的Loki程式库,让我瞠目结舌,陷入沉思…与…呃…恍惚J 。 本书分为两大部分。首先(第一篇)是基础技术的讨论,包括 template template parameters(请别怀疑,我并没有多写一个字)、policies-based design、compile-time programming、recursive templates, typelists。每一项技术都让人闻所未闻,见所未见。 第二部分(第二篇)是Loki程式库的产品设计与实作,包括Small-Object Allocation(注1), Generalization Functors, Singleton, Smart Pointers, Object Factories, Abstract Factory, Visitor, Multimethods。对设计范式(design patterns,注2)稍有涉猎的读者马上可以看出,这一部分主题都是知名的范式。换言之,作者Andrei尝试以templates-based, policies-based手法,运用第一篇完成的基础建设,将上述范式具体实现出来,使任何人能够轻松地在Loki程式库的基础上,享受设计范式所带来的优雅架构。 注1:Small-Object Allocation属于底层服务的「无名英雄」,故而在章节组织上仍被划入第一篇。 注2:patterns一词,台湾大陆两地共出现三种译法:(1) 范式 (2) 样式 (3) 模式。我个人最喜欢「范式」,足以说明patterns的「典范」意味。因此本书以「范式」称patterns。顾及大陆术语习惯,简体版以「模式」称patterns。本书所有patterns都保留英文名称并以特殊字型标示,例如Object Factories, Visitors…。 设计范式(Design Patterns)究竟能不能被做成「易开罐」让人随时随地喝上一口,增强体力?显然范式社群(patterns community)中有些人不这么认为 — 见稍后Scott Meyers序文描述。我以为,论断事物不由本质,尽好口舌之辩的人,不足取也。Andrei所拓展的天地,Loki所达到的高度,不会因为它叫什幺名字而有差异,也不会因为任何人加诸它身上的什么文字包装或批评或解释或讨好,而有不同。它,已经在那儿了。 本书涉足无人履踏之境,不但将 C++ templates和 generics programming技术做了史无前例的推进,又与 design patterns达成巧妙的结合。本书所谈的技术,所完成的实际产品,究竟是狂热激进的象牙塔钻研?抑或高度实用的崭新设计思维?做为一个技术先锋,Loki的现实价值与未来,唯赖你的判断,和时间的筛选。 然而我一定要多说一句,算是对「唯实用论」的朋友们一些忠告。由来技术的推演,并不只是问一句「它有用吗」或「它现在有用吗」可以论断价值的。牛顿发表万有引力公式,并不知道三百年后人们用来计算轨道、登陆月球。即使在讲述「STL运用」的课堂上,都还有人觉得太前卫,期盼却焦躁不安,遑论「STL设计思维和内部实作」这种课,遑论Loki这般前卫技术。很多人的焦虑是:我这么学这么做这么写这么用,同侪大概看不懂吧,大概跟不上吧。此固值得关注,但个人的成长千万别被群体的惯性绊住脚步(注3)。我们曾经鄙夷的别人的「无谓」超前,可能只因我们故步自封,陷自己于一成不变的行为模式;或因为我们只看到自家井口的天空。当然,也可能某些前卫思想和技术,确实超越了庞大笨重迟缓的现实世界的接受度。你有选择。做为一位理性思考者,身在单纯可爱的技术圈内,请不要妄评先锋,因为他实在站在远比你(我)高得太多的山巅上。不当的言语和文字并不能为你(我)推砌楼台使与同高。 深度 + 广度,古典 + 前卫,理论 + 应用,实验室 + 工厂,才能构筑一个不断进步的世界。 侯捷 2003/01/08 于台湾新竹 jjhou@ccca.nctu.edu.tw P.S. 本书译稿由我和于春景先生共同完成。春景负责初译,我负责其余一切。春景技术到位,译笔极好,初译稿便有极佳品质,减轻我的许多负担。循此以往必成为第一流IT技术译家。我很高兴和他共同完成这部作品。本书由我定稿,责任在我身上,勘误表由我负责。本书同步发行繁体版和简体版;基于两岸计算机术语的差异,简体版由春景负责必要转换。 P.S. 本书初译稿前三章,丘铭彰先生出力甚多,特此致谢。 P.S. STL, Boost, Loki, ACE...等程式库的发展,为C++ 领域挹注了极大活力和竞争力,也使泛型技术在C++ 领域有极耀眼的发展。这是C++ 社群近年来最令人兴奋的事。如果你在C++ 环境下工作,也许这值得你密切关注。 注3:从万有引力观之,微小粒子难逃巨大质量团的吸滞(除非小粒子拥有高能量)。映照人生,这或许是一种悲哀。不过总会有那么一些高能粒子逸脱出来 — 值得我们转悲为喜,怀抱希望 。 -- the end |
相关推荐
23、先锋派的异常与跨国轨迹:前卫艺术的别样探索
本文探讨了两位跨国先锋艺术家——瑞典-美国电影制作人贡沃尔·尼尔森与丹麦-法罗群岛多媒体艺术家古迪帕尔的艺术实践。通过分析尼尔森的动画拼贴电影和古迪帕尔融合音乐、视觉艺术与社会行动的创作,揭示了先锋派艺术在突破传统、多元融合与推动社会变革方面的共性与差异。文章进一步探讨了先锋派艺术在当代社会中的创新意义与社会影响,并展望其在未来科技融合、社会参与和国际交流中的发展方向。
读简体版的译者序
其实Modern C++ Design是本好书,但中文版的翻译水平实在不够。想必侯老也没有细细检查,同样是一个名词,在中的中文名称却是另一种翻译。还好,自己写的中文才是人写的中文。全书中,最容易读懂的就是译者序。侯老的这一段写得很有意义,须要细细体会:然而我一定要多说一句,算是对“唯实用论”的朋友们一些忠告。由来技术的推演,并不只是问一句“它有用吗”或“它现在有用吗”可以论断价值的。牛顿发
8、挪用过去,审视当下:马蒂亚斯·法尔德巴肯的媒体艺术探索
挪威艺术家马蒂亚斯·法尔德巴肯通过挪用历史前卫艺术的策略与元素,结合流行文化与当代媒体技术,对数字时代下的艺术生产、主体性和大众文化进行深刻批判。其作品如《黑色屏幕》和概念‘艺术家作为谷歌教授’揭示了晚期资本主义中艺术与生活的融合悖论,反映了从统一大众到碎片化亚文化的转变,并促使观众反思自身在媒体文化中的位置。本文探讨了法尔德巴肯如何以自我反思的方式质疑当代艺术的批判潜力,提出一种适应21世纪数字生态的新‘作者功能’,并为艺术创作、社会反思与未来发展提供重要启示。
西班牙龙达阿尔玛扎拉橄榄油坊博物馆
2021年10月6日阿尔玛扎拉橄榄油磨坊博物馆(LA ALMAZARA Olive Mill Museum)举行了奠基仪式。
84、20世纪80年代丹麦艺术家:先锋派的传承与反叛
20世纪80年代,丹麦出现了一群被称为'De Unge Vilde'(年轻狂野艺术家)的新锐艺术家。他们与意大利超前卫艺术、德国'新野性绘画'和美国'新图像绘画'有着形式上的联系,但其艺术实践远不止表面的风格模仿。这群艺术家在先锋派传统中进行创作,继承了20世纪60年代激浪派、情境主义和丹麦实验艺术学校的策略,同时融合流行文化元素,展现出一种'复古先锋派'的特征。本文探讨了'De Unge Vilde'如何在传承与反叛之间塑造独特的艺术语言,并分析了其与先锋派历史的关系及其对当代艺术的影响。
平衡网站的色彩各种颜色的意义
红色 是一种有活力的颜色,带有强烈的感情色彩,给人冲动、愤怒、热情、有活力 的感觉。在每个国家,红色所代表的意义也有所不同,在中国,红色代表繁荣和幸福,中国红就是中国的一张名片,如果你的站点要显得很“中国”,请选择中国红。当然,在其他国家或地区,也许红色的含义就不一样了。 橙色 是欢快活泼的光辉色彩,是暖色系中最温暖的颜色,是一种快乐而幸福的颜色,它使人联想到金色的秋天和丰硕的果实。如果橙色中稍稍混入黑色或白色,会变成一种稳重、含蓄而又明快的暖色;如果混入较多的黑色,就成为一种“烧焦”的颜色:在橙色中
祭奠我们渐渐远去的青春
好久没有写点东西了,都好像没有了这种习惯!这是比较可怕的!可又不知道写点什么,八零后的我们慢慢的成为这个社会的主体,这意味着我们要承受更大的压力。我们没有60、70的那种传统,也没有90、00那样的前卫。生活在两类人群的夹缝中,我们必须用心去学习父辈们的城府,还得有00后的活跃! 80后的我们即将面对人生最最巅峰的时刻,男人三十而立,奔三的八零后...
90、法国女权主义理论、超现实主义与芬兰女权先锋派小说
本文探讨了法国女权主义理论与超现实主义对芬兰女权先锋派小说的影响,重点分析了卡琳·莫对超现实主义的批判性运用,以及玛丽亚娜·扬蒂的《Amorfiaana》和莫妮卡·法格霍尔姆的《Diva》在叙事结构、语言风格和主题表达上的创新。两部小说体现了女权主义与文学先锋派的深度融合,通过实验性写作挑战传统性别政治,拓展女性主体性的文学空间,展现了新一代女性作家在形式与内容上的激进探索。
走进人工智能|GANs AI时代下的前卫艺术
GANs(生成对抗网络)是一种机器学习技术,它由两个神经网络组成:一个生成器和一个判别器`。生成器负责生成假数据,而判别器则负责区分真实数据和假数据。这两个网络相互竞争,不断地进行优化,最终生成越来越接近真实数据的结果。 `核心思想是通过学习真实数据的特征,生成具有类似特征的新数据。`在GANs中,生成器尝试生成与真实数据类似的假数据,而判别器则尝试区分真实数据和假数据。生成器和判别器之间产生了一种博弈关系,双方互相竞争,最终达到不断优化、生成更加逼真的数据的目的。
前卫高新科幻风UI图标资源包下载
htmltable {th, td {th {pre {简介:在IT行业中,图标设计是提升用户界面(UI)与用户体验(UX)的关键元素。本资源“前卫高新科幻主题图标下载”提供一组风格独特、富有未来感的图标,适用于高科技、人工智能、虚拟现实等前沿科技产品的视觉设计。这些图标融合了3D渲染、流体动态、极简主义与金属质感等现代设计趋势,采用深空色调与发光效果,营造出强烈的科幻氛围。
FPGA新手必看:用USB转TTL实现串口通信的完整流程(附CH340G电路详解)
本文为FPGA新手提供了通过USB转TTL模块实现串口通信的完整实战指南。详细解析了CH340G电路设计要点、硬件连接方法,并分享了经过验证的Verilog代码框架,帮助读者快速掌握FPGA与PC通信的核心技术,解决电平匹配与波特率设置等常见问题。
跳出圈子致89年美展
有幸看到89年《中国美术大展》前卫与超前卫,现代与超现代,在我出生的那个年代已经开花并结果了。所不不必为琐事而困扰,不必为前程而疑惑。如果跳出当前的圈子,跳出思想的束缚,不也是一种很好的解脱吗?如果把时间拉长,当前的困境算得了什么,如果把人生看作是一个舞台,自己每天都上演不同的戏分而矣,可能是配角,也可以是主角,找对自己的乐子就行了,不必太当真了。 刚来的同事一句话印象特别深,“说话,做事使人觉...
Android 音频源码分析——音量调节流程
源码分析基于android9.0 一、声音类型 对于大多数手机用户来说,操作手机音量按键可以看到,声音类型分为四种:媒体、铃声、闹钟、通话,但是其系统内部则分为十几种类型。 声⾳类型用来区分不同播放用途及播放设备,包含11中类型 定义在 frameworks/base/media/java/android/media/AudioSystem.java中 /** Used to identify the default audio stream volume */ public static final in
首批Windows 8企业用户的前卫方案
企业用户往往要花上数年时间才会彻底接受并全盘部署新的微软Windows系统版本,这一点在需要进行内部应用程序测试的公司身上体现得尤为明显。由于当前整个市场仍然在从XP向Windows 7过渡,因此企业领域能够用来接纳Windows 8的空间其实并不太大。尽管如此,微软公司Windows商务高级总监Erwin Visser却认为,“消费者会成为Windows 8取代Windows 7的主要动力”,他
硬盘dma读写过程
保护模式中,pci上的硬盘dma读写方法
一个响应ping包延迟偏大的问题
前段时间客户反馈一个使用pc上的命令行ping无线设备(WiFi4)时,设备平均响应时间(测试时长2小时,1秒Ping一次)相比其它机型偏慢的问题,并上传上具体的时间的Log.从log中看到,大多数包的响应还是比较快的,只是个别响应时间较长,且响应时间长的包时间几乎都是一样的100多ms.如下是部分响应时间截图. 整个2小时的测试时间里,总是时不时的出这么上102,104ms的响应时间,这直接导致了平均响应时间被拉大.于是本地测试,也发现了类似的延迟.本地测试时,现象略有...
点线面的意义_浅析点线面在平面设计中作用与意义.doc
浅析点线面在平面设计中作用与意义浅析点线面在平面设计中作用与意义【摘 要】形态语言千姿万态,但平面形态要素可归结为点、线、面,通常称之为“视觉三要素”。点、线、面纯属感觉存在,产生与人们观察物象时的形态。点、线、面在设计学中起到了巨大的作用,随着结构主义的产生,推动了自然科学与艺术及哲学间的发展,也促使对点、线、面的研究向纵深发展,从研究它们的形式到研究它们的作用与意义。但是,若无视这些形态中的点...
【数字电源/MATLAB+PLECS】如何进行 Buck 数字电源仿真(二)PLECS 搭建开环 Buck 功率级
本文介绍了如何在PLECS中搭建开环Buck功率级模型,验证数字电源设计的基本思路。重点内容包括: 明确开发顺序:先开环验证功率级,再闭环设计控制器 搭建关键组件:输入电源、PWM模块、MOSFET开关、续流二极管、LC滤波电路及负载 设置初始参数:24V输入、12V输出、200kHz开关频率、22μH电感、100μF电容 测量关键波形:MOSFET Vds验证开关动作、电感电流纹波和输出电压稳态值 提供完整仿真模型和GitHub资源,便于读者复现验证 文章强调通过开环测试先确保功率级正确性,为后续闭环控制
目前流行的装修风格_现在最流行的八大装修风格
流行的装修风格主要分为八大风格,分别为:现代前卫风格、现代简约风格、雅致主义风格、现代中式风格、新古典风格 、欧式古典风格、美式*主义以及地中海风格。不同的设计风格分别对应了不同的生活方式:现代前卫对应另类;现代简约对应时尚;雅致对应优雅(闲雅);新中式对应怀旧;新古典对应高贵;欧式古典对应华丽(奢华);美式*对应休闲(自然);地中海对应浪漫。现代前卫风格依靠新材料、新技术加上光与影的无穷变化,追...
损失函数大汇总(四十三)(Boundary Loss附公式推导与代码)
摘要 Boundary Loss是一种针对图像分割任务的边界优化损失函数,特别适用于小目标、细长结构和类别不平衡场景。它通过引入真实边界的有符号距离场(SDF),将边界距离优化问题转化为区域积分形式。与Dice Loss等区域重叠损失不同,Boundary Loss更关注预测边界与真实边界的精确对齐,而非整体区域重叠。其核心公式为像素级SDF值与预测概率的乘积求和,通过梯度调整使预测概率在真实边界内部升高、外部降低。该损失通常与区域型损失(如CE或Dice)联合使用,形成"区域分割+边界修正&qu
calibre:将calibre 的layer number 转换为实际的laymer 名称(7)
可以使用与版图数据库配套的(Standard Verification Rule Format,标准验证规则格式),在 Calibre DESIGNrev 中加载图层名称。
给用户正确的交互方式
通常是鼓励交互设计师团队,试着做一些新玩意儿出来,而且要能对产品迭代提供现实帮助。所以团队内某优秀设计筒子,总能拿出一些很前卫的交互设计。但在讨论是否运用到具体产品的时候,会被我要求:我们往后退一步,后退一步比较安全。他会引出世上最先进公司的产品,也都用了这种方式,于是我们开始了团队讨论。 首先团队提出了一个问题:谁是用户?要去改善他们的体验,我们必须要先清楚这一点。每一个用户群,他们的物理属性
【Unity 实用工具篇】✨| 受击插件Feel 详细教程,开发游戏时更好的操控 游戏打击感
在一个游戏中,游戏手感对于游戏的整体游玩体验是非常重要的,而游戏手感中有一个很重要的点:打击感 那本篇文章就来讲一下打击感中的受击反馈部分。 在游戏中经常会用到攻击敌人,敌人扣血,执行某些受击功能的执行,尤其是对于有战斗场景的游戏来说,这就是标准的受击反馈。 所以引出本篇文章的主角:受击插件 Feel 的使用,2D和3D游戏都可以使用。
学习机的历史意义超越了山寨产品的意义
1984年2月16日,同志就教导我们“计算机要从娃娃抓起”,但当时的一个现实是,不但娃娃用不起电脑,许多大人也体会到电脑可望而不可及的奢侈品。时隔多年后的1991年,许多人要想用碰下电脑,只能换上拖鞋进学校或单位的机房,还得一个小时轮侯,比起现在进五星级酒店还充满神奇和崇敬。受国民平均消费水平还很低的因素制约,当时计算机的高高在上,虽然对学电脑的迫切性和重要性连出租车司机都会告诉你,但仍是曲高和寡...
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
river歌曲表达的意思_Lost Rivers这首歌到底想表达什么?
展开全部一、这首歌既没62616964757a686964616fe4b893e5b19e31333363373166有旋律,也没有歌词,从头到尾都是破碎的人声哀嚎,其实这是来源于SAINKHO对儿时村边一条干涸小河的记忆,整首歌曲全部为人声实验作品, 或许是与在莫斯科受到的实验音乐或前卫爵士乐的熏陶有关吧。AINKHO自我得近乎偏执,她时而欢喜时而哭泣,时而幼稚时而苍老,将所有的情绪都转化为对嗓...
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
80



被折叠的 条评论
为什么被折叠?



