stalk12 发表于 2023-12-24 14:11:07

请教有没有什么资料专门汇集整理C语言或C++编程代码中的各种奇技淫巧?

举个不贴切的例子,网上流传这么一个神话段子,不知真假:
国内某自然语言识别团队搞了一套语音识别,准确率还可以,就是这个性能实在是差,识别普通长度的话要10秒,这边的团队死活优化不了了。然后送给了毛子的科学家去优化,优化了2个月性能提高到了1.2秒。然后我校师生们就好奇TMD毛子怎么干的啊,就开始撸毛子改过的C语音代码,然后就发在代码里现了一堆类似这样的东西:* * * * *struct —— 5层指针,懂C语言的都知道这意味着什么。代码的原作者们一脸懵逼——因为完全看不出来这特么是我写的代码。

我在这里句这个例子不是让大家吐槽较真其中的真实性和可行性,而是表达我们现实中,编程是一门科学也是一门艺术,长年累月有不少的出色的工程师沉淀总结了很多奇思怪想,多是经验和智慧的结晶,能通过精妙的设计和匪夷所思的想法,优化甚至突破一些难关,提高编程效率。
那么有没有什么资料专门整理汇集了这些奇奇妙妙的编程诀窍和窍门呢?

chipset009 发表于 2023-12-24 15:45:14

把大学里计算机课全学完,且每门课都考满分,这在学生一族里是名副其实的牛B人物,或者说学霸。可惜学霸君的真实水平却弱爆了,连个像样的画图板或者写字板或者五子棋之类的程序都写不了…

当程序需要用万行甚至百万行来算的时候,任何奇淫技巧分文不值,编码规范压倒一切。针对需求的良好设计就是最大的技巧,去看细节实现则是算法+数据结构。

如果愿意自娱自乐,不懂编程还想走捷径,可以看看“21天精通C++”或者“21天精通Java”这类卖给异想天开人士的书。如果喜欢玩数字游戏,可以看看Hacker's delight,中文名字似乎是“高效程序的秘密”…

以上是一本正经的回答,不为活跃论坛气氛!

chipset009 发表于 2023-12-24 14:36:59

本帖最后由 chipset009 于 2023-12-24 14:49 编辑

懂得人会去网上编段子吗?编段子的都是学中文和新闻历史之类找不到正经工作的…

这类人连点常识都没有,还5重指针,哪个编码规范会允许使用3重以上的指针?

如果你信这种东西,都不如买本“7天掌握C++”,“7天掌握Java”这种销量很大的书看看…

程序说到底就是算法+数据结构,架构就是把一个复杂的问题分解成很多容易实现的小问题,而几乎不丢失效率且容易理解和维护。

提升执行效率需要改进设计,在现有的设计下改进效率只能改进算法。什么技巧之类,分文不值…

zhxzhx 发表于 2023-12-31 10:36:39

程序是给人看的,任何人看不懂的程序,都是垃圾,另外用指针并不能提高性能,只能提高灵活性

t3486784401 发表于 2023-12-24 14:42:49

我先来一段,计算 y=1/sqrt(x) :

float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y = number;
    i = * ( long * ) &y;            // evil floating point bit level hacking
    i = 0x5f3759df - ( i >> 1 );    // what the fuck?
    y = * ( float * ) &i;
    y = y * ( threehalfs - ( x2 * y * y ) );    // 1st iteration
    // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed

    return y;
}

locky_z 发表于 2023-12-24 14:52:41

有些奇淫技巧是利用了某些特定编译器或者特定MCU的特性,但这样做未必有通用性或者持续性
例如union这种结构。
例如union
{int AX;
byte AH,AL;
}
将int16和byte直接定义在相同内存上,使用起来因为不用其他存取、转换操作,速度会快很多,但它是基于编译器没有内存对齐,另外还要假设编译器是高字节在高位,假如换其他mcu,换其他编译器就会出问题。

iffi123 发表于 2023-12-24 15:25:15

本帖最后由 iffi123 于 2023-12-24 16:15 编辑

走捷径学c是不可能的,东抄一招右学一招,知识都是碎片化连不起来, 还是老老实实学基础概念

stalk12 发表于 2023-12-24 15:50:56

chipset009 发表于 2023-12-24 15:45
把大学里计算机课全学完,且每门课都考满分,这在学生一族里是名副其实的牛B人物,或者说学霸。可惜学霸君 ...

谢谢你的建设性观点。

jforu 发表于 2023-12-24 19:21:20

chipset009 发表于 2023-12-24 15:45
把大学里计算机课全学完,且每门课都考满分,这在学生一族里是名副其实的牛B人物,或者说学霸。可惜学霸君 ...

真牛的人, 学习满分,业余生活也满分(有的大二的学生就开始用自己的专业在社会/网上赚钱了)

真牛的人, 不止于课堂, 不止于书本, 不止于学校.

当然不同目标, 方向不同,准备还向上学的,就关注考研/保研, 准备工作的,就同时关注赚钱.

编程, 高阶的,其实就是算法. 数学要学的非常好.

大学校间应该有比赛:数学模型竞赛. 一个实际问题,分析后:建立模型,用数学的语言表达(这就是算法),用程序的方式实现.








ustone 发表于 2023-12-24 19:25:54

本帖最后由 ustone 于 2023-12-24 19:31 编辑

道(良好的设计、编程规范、战略)>术(技术、战术)>奇技淫巧
好的设计和规范可以让一群每个个体都不完美的码农造出接近完美的软件系统
百步穿杨和卖油翁滴油过铜钱是奇技淫巧吗?我觉得属于良好的技术
创新、灵感也是来自大量的日常实践,所以基本功很重要,奥数属于加分项

chipset009 发表于 2023-12-24 20:02:55

jforu 发表于 2023-12-24 19:21
真牛的人, 学习满分,业余生活也满分(有的大二的学生就开始用自己的专业在社会/网上赚钱了)

真牛的人,...

数学和算法其实不是一回事。数学是有帮助,但不是直接关系。成熟的商业应用,领先大学很多年是个不争的事实。学校里教的都是几十年前的理论,有些还在用,有些过时了,有些已废弃。

再难的题目都是已知的,如果还停留在做题的层面,只能说还没入门。建模比赛这种级别的东西还差得太远。起码在我这种低水平人士的眼里属于浪费时间。ACM题没少做,现在回头想想那时真是无知,不能说一点用没有,只能说收效不大。

如果非要说哪门课最有帮助,首先是英语,其次是算法。英语好,可以跟国际上开源届大师一起做项目,强化上两年,写程序水平就能把国内那些名校计算机博士生几乎个个干的四脚朝天…

程序这种东西,是写出来的,当然,方法很重要,先天素质很重要。先写上10万行代码,再说别的。就像兵法一样,兵书是一回事,真到大军打仗,是另外一回事。

yjmwxwx 发表于 2023-12-24 21:59:43

本帖最后由 yjmwxwx 于 2023-12-24 22:01 编辑

我觉得下面这本书可能符合奇技淫巧这类型的,只是我不懂英文看不懂。。:Q

https://www.jjj.de/fxt/

girlexplorer 发表于 2023-12-24 22:27:59

本帖最后由 girlexplorer 于 2023-12-24 22:53 编辑

毛子在软件上面谈不上落后,落后不落后不知道,但至少默默无名。没听说过什么优秀的软件是毛子编的。烂大街的杀毒软件、黑客例外。
论编程,还是盎格鲁人厉害,阿三第二。
看盎格鲁人写的编程书即可。

据说国内最最权威的c语言教材是谭浩强编写的。

老衲的所有编程教材(matlab没学,c语言就是知道半点皮毛的皮毛):





SPKBL 发表于 2023-12-25 01:26:46

t3486784401 发表于 2023-12-24 14:42
我先来一段,计算 y=1/sqrt(x) :

大名鼎鼎的快速平方根算法:lol

t3486784401 发表于 2023-12-25 01:44:09

SPKBL 发表于 2023-12-25 01:26
大名鼎鼎的快速平方根算法

所以说是奇技淫巧,看似 what the fuck,实则真香

stalk12 发表于 2023-12-25 06:39:52

t3486784401 发表于 2023-12-24 14:42
我先来一段,计算 y=1/sqrt(x) :

大开眼界了。看了好半天才勉强看懂三四成。
页: [1] 2 3 4
查看完整版本: 请教有没有什么资料专门汇集整理C语言或C++编程代码中的各种奇技淫巧?