水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
返回
首页
|
上页
|
2/2
|
转到
主题:c++反射提案正式进入标准
50楼
|
ylh1969
|
2025-06-28 19:09:03
|
展开
静态反射没啥用,在某个struct的编译环境中,直接使用成员不好吗?为啥要脱裤子放屁?
看22楼,做个公用程序,或者叫做独立于数据的程序,这个程序与他要处理的struct不在一个编译单元,因此它不认识提交的struct,这时才需要反射。
论访问数据库的性能,与JAVA比起来,可不是差一星半点,应该是有数量级的差距,按照27楼的方法。
一般人比较JAVA与C访问数据库的性能,用相同的语句比较,那是差不多,但是用上绑定变量和数组操作,性能就不是JAVA可比的了。
这两个操作,需要多次的枚举每个列名,类型,位置。
如果想做个通用的程序,用于简化编程,就需要动态的反射。
【 在 yuanmo 的大作中提到: 】
: 有静态反射就足够做很多事情了,以前得用大量时间做meta programming用来映射RPC和数据库之类,技巧一大堆,代码一大坨,就实现了一个别的语言内置的功能。
: C++非得纠结那一丢丢可以忽略不计的性能损失,宁可把开发效率降低50%。不可思议。
: 尤其是抛弃C++,用go、python、Typescript之后,回头再看C++,越看越觉得是屎,当年对C++有多熟悉,现在就有多讨厌这坨屎上雕花的奇技淫巧。
: ...................
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
57楼
|
ylh1969
|
2025-06-29 10:05:21
|
展开
22楼27楼57楼。
动态的反射,把屎山封装在工具库里,外边的使用是非常简洁的。
【 在 slimcan 的大作中提到: 】
: 我怎么感觉这些新特性让屎山代码概率更大了?一个好的设计里为啥需要反射?有人能举个必须要反射才行的例子吗
: --
--
FROM 221.218.61.*
72楼
|
ylh1969
|
2025-06-29 21:15:00
|
展开
15年了,你见过c的ORM工具吗?
数据库还得访问,屎山还是屎山,我20年前的工作,把屎山封闭在库里,外部的使用,简洁而优雅,至今没有一个工具出现能够取代。这不听说有反射了,挺高兴,结果是静态的,没啥用。
那时JAVA就有hibernate和ibatis。靠的就是运行时反射。
我的工具库就是出于hibernate而胜于它。
【 在 yuanmo 的大作中提到: 】
: 这种都是15年前的思维了,都落后两个时代了。
:
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
73楼
|
ylh1969
|
2025-06-29 21:18:11
|
展开
我的工具库不是宏,是.a或.so,都调试好了,有内建的日志系统,问题很好找。
c就是给你一个手段,库你可以自己搞。只不过没有提供反射,很多其他语言能做的事情,c比较困难。
只需要22楼的方法提供meta信息,就可以把屎山封闭在.a,.so中,外部是优雅简洁的调用。
【 在 yuanmo 的大作中提到: 】
: 说的不就是因为C++没有内建支持,非得要搞一坨屎山才能搞定吗,这不就是C++标准不务正业的证据吗。。。一个
: 现在的做法,外面的使用再简洁,不都得写N个宏,用完全非标准的方式定义么。
: 调试起来编译器报个错,不还是得把人绕晕。
: ...................
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
76楼
|
ylh1969
|
2025-06-30 16:16:13
|
展开
你说的也不错,我致力于解决这个矛盾,让运行效率与开发效率都高。
办法就是写框架,完成高效率的C/S/S的客户服务器模型,包括大并发的客户端连接,多进程,多线程,线程池+协程的并行模式,三维连接池管理,管理多个功能各自不同的业务组,每个业务组由相同功能的多个服务器组成,每个服务器有多个连接,每个连接一个线程或进程。每个业务组实现负载均衡和容错以及排队机。在服务端实现了数据库的优雅访问,把高效率数据库访问通常所需要的屎山代码封装在工具库里。同时,包括自愈式数据库连接池,当数据库故障时,服务器不必重启,等数据库恢复了,服务自动恢复。
干了前后30年,也取得一些成效,带过若干个项目组,经过4小时的说明培训,都能顺利使用其基本功能。一周后就能玩出花来。应用程序作为插件,用统一的接口标准插入框架,不必关心什么进程线程协程,也不必关心同步异步,block nonblock。。。
更重要的,框架提供了柔性编程的能力。
当开发一个大型数据库应用项目时,数据结构的改变是经常的。每次改变都要修改屎山代码,都必须rewiew所有的屎山代码,这太痛苦了。框架提供了柔性手段,整个项目所需的数据库表,统一把各个表映射的struct和meta信息放在一个data.cpp里,这个cpp是用工具自动生成的,也算是屎山吧,好在不用人写。当数据结构改变时,重新生成data.cpp即可,没有被涉及到的模块基本不用管。重新编译即可。
以一个10人左右的应用项目组为例,如果没有柔性编程,改变一次数据结构,要review两天,有了柔性编程,只需要十几分钟,数据库管理员修改数据结构后,重新生成data.cpp,然后通知组员重新编译。
【 在 siyuetian 的大作中提到: 】
: 怎么说呢,码农也是人,人会用脚投票。
: 开发效率是很明显的,不考虑ai来写的话,cpp远低于java/python/go之类的,这没啥可说的。
: 性能就很有说到了,高并发叫性能,低延迟也叫性能。cpp可以实现高并发,可能代码远不如其他语言那么优雅,或者直白点,恶心的想死。但是其他语言能实现cpp的低延迟吗?至少java/python/go都证明了他们不行。rust我不熟悉,不评论。
: ...................
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
78楼
|
ylh1969
|
2025-06-30 19:31:43
|
展开
一般的码农没有权力选择语言和平台。由项目经理决定。在软件初步设计文件中敲定,在此之前,核心码农可以提出有影响力的建议。一旦确定,由项目经理组织开发力量,招聘人员。应聘者只能按照要求应聘。
【 在 nextworld8 的大作中提到: 】
: 按应用场景选择了
: 技术选型首要要求是场景适合
: 现实中也有一些现实情况 尤其只掌握一门语言的 很对不考虑实际场景 一股脑要求其熟悉的语言
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
97楼
|
ylh1969
|
2025-12-17 16:25:40
|
展开
https://mp.weixin.qq.com/s?chksm=fb75d28ccc025b9a68872b84f66350220f2eda42957fdf6e4eeced6230f5b818995a1a68a06c&exptype=unsubscribed_card_recommend_article_u2i_mainprocess_coarse_sort_tlfeeds&ranksessionid=1765959019_2&req_id=1765945405721840&mid=2247484567&sn=1b5d194e68dcc3dd19b53260c41591b7&idx=1&__biz=MzU0NDkzMjcyNA%3D%3D&scene=169&subscene=200&sessionid=1765959086&flutter_pos=16&clicktime=1765959636&enterid=1765959636&finder_biz_enter_id=5&jumppath=20020
_1765959329855%2C50094_1765959457538%2C20020_1765959460133%2C50094_1765959633292&jumppathdepth=4&ascene=56&fasttmpl_type=0&fasttmpl_fullversion=8044020-zh_CN-zip&fasttmpl_flag=0&realreporttime=1765959636803&devicetype=android-34&version=28004238&nettype=WIFI&abtest_cookie=AAACAA%3D%3D&lang=zh_CN&session_us=gh_bc28c5dcb8b8&countrycode=CN&exportkey=n_ChQIAhIQbYZtLJRI6yObkEuDj1cpSxLwAQIE97dBBAEAAAAAAO5LDw5ge5AAAAAOpnltbLcz9gKNyK89dVj0bI8X3qgsNcGcp4u8VdwrEynuQ3O3xzPw004PXtLYQVdBYiUzmYGzoHnXRGl%2BIEcEWhiCaFcASP7tCMTvZG8LlMs98sVYDwzIRe5mTzIxPvEKMqbrTpfodaHMIRWtNji5v%2BU7dK13IplctWwrdkmZhp2uz02UVAmdTSHuSkbKWRZSQSngsCXRLP3SV8dhNfUFOF8qDUd3kOeVzwh8KqL5ffybuL7qbfKXzaXDK87LNXcoXNWQ7CSGD5daRKNDQkygmh4BFVjB0RxsCg%3D%3D&pass_ticket=HVTF9flo2HcCopzpdLe2oMM9CNyRpXaclewh9822Nn9Tz8R5%2FpDw3iwhLMGdvMoQ&wx_header=3
【 在 allegro 的大作中提到: 】
:
https://zhuanlan.zhihu.com/p/1919923607997518115?share_code=iC2LCPYMXVPJ&utm_psn=1920369550328850394
: 这是大事啊!
: - 来自 水木社区APP v3.5.7
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
98楼
|
ylh1969
|
2025-12-17 16:29:10
|
展开
https://mp.weixin.qq.com/s?chksm=fb75d28ccc025b9a68872b84f66350220f2eda42957fdf6e4eeced6230f5b818995a1a68a06c&exptype=unsubscribed_card_recommend_article_u2i_mainprocess_coarse_sort_tlfeeds&ranksessionid=1765959019_2&req_id=1765945405721840&mid=2247484567&sn=1b5d194e68dcc3dd19b53260c41591b7&idx=1&__biz=MzU0NDkzMjcyNA%3D%3D&scene=169&subscene=200&sessionid=1765959086&flutter_pos=16&clicktime=1765959636&enterid=1765959636&finder_biz_enter_id=5&jumppath=20020
_1765959329855%2C50094_1765959457538%2C20020_1765959460133%2C50094_1765959633292&jumppathdepth=4&ascene=56&fasttmpl_type=0&fasttmpl_fullversion=8044020-zh_CN-zip&fasttmpl_flag=0&realreporttime=1765959636803&devicetype=android-34&version=28004238&nettype=WIFI&abtest_cookie=AAACAA%3D%3D&lang=zh_CN&session_us=gh_bc28c5dcb8b8&countrycode=CN&exportkey=n_ChQIAhIQbYZtLJRI6yObkEuDj1cpSxLwAQIE97dBBAEAAAAAAO5LDw5ge5AAAAAOpnltbLcz9gKNyK89dVj0bI8X3qgsNcGcp4u8VdwrEynuQ3O3xzPw004PXtLYQVdBYiUzmYGzoHnXRGl%2BIEcEWhiCaFcASP7tCMTvZG8LlMs98sVYDwzIRe5mTzIxPvEKMqbrTpfodaHMIRWtNji5v%2BU7dK13IplctWwrdkmZhp2uz02UVAmdTSHuSkbKWRZSQSngsCXRLP3SV8dhNfUFOF8qDUd3kOeVzwh8KqL5ffybuL7qbfKXzaXDK87LNXcoXNWQ7CSGD5daRKNDQkygmh4BFVjB0RxsCg%3D%3D&pass_ticket=HVTF9flo2HcCopzpdLe2oMM9CNyRpXaclewh9822Nn9Tz8R5%2FpDw3iwhLMGdvMoQ&wx_header=3
可以发链接啦?
【 在 z16166 的大作中提到: 】
: 不要人云亦云
: 离开了他所擅长的领域,也不一定都对
:
--
FROM 221.221.50.*
99楼
|
ylh1969
|
2025-12-17 16:38:02
|
展开
因为没有名字,做SQL比较困难。
SQL是这样生成的:
select 成员名,成员名,,,, from 表名(结构名) where 列名=:成员名;
绑定变量通过成员名找到成员的类型,长度,和位置。
【 在 ylh1969 的大作中提到: 】
:
https://mp.weixin.qq.com/s?chksm=fb75d28ccc025b9a68872b84f66350220f2eda42957fdf6e4eeced6230f5b818995a1a68a06c&exptype=unsubscribed_card_recommend_article_u2i_mainprocess_coarse_sort_tlfeeds&ranksessionid=1765959019_2&req_id=1765945405721840&mid=2247484567&sn=1b5d194e68dcc3dd19b53260c41591b7&idx=1&__biz=MzU0NDkzMjcyNA%3D%3D&scene=169&subscene=200&sessionid=1765959086&flutter_pos=16&clicktime=1765959636&enterid=1765959636&finder_biz_enter_id=5&jumppath=20020
_1765959329855%2C50094_1765959457538%2C20020_1765959460133%2C50094_1765959633292&jumppathdepth=4&ascene=56&fasttmpl_type=0&fasttmpl_fullversion=8044020-zh_CN-zip&fasttmpl_flag=0&realreporttime=1765959636803&devicetype=android-34&version=28004238&nettype=WIFI&abtest_cookie=AAACAA%3D%3D&lang=zh_CN&session_us=gh_bc28c5dcb8b8&countrycode=CN&exportkey=n_ChQIAhIQbYZtLJRI6yObkEuDj1cpSxLwAQIE97dBBAEAAAAAAO5LDw5ge5AAAAAOpnltbLcz9gKNyK89dVj0bI8X3qgsNcGcp4u8VdwrEynuQ3O3xzPw004PXtLYQVdBYiUzmYGzoHnXRGl%2BIEcEWhiCaFcASP7tCMTvZG8LlMs98sVYDwzIRe5mTzIxPvEKMqbrTpfodaHMIRWtNji5v%2BU7dK13IplctWwrdkmZhp2uz02UVAmdTSHuSkbKWRZSQSngsCXRLP3SV8dhNfUFOF8qDUd3kOeVzwh8KqL5ffybuL7qbfKXzaXDK87LNXcoXNWQ7CSGD5daRKNDQkygmh4BFVjB0RxsCg%3D%3D&pass_ticket=HVTF9flo2HcCopzpdLe2oMM9CNyRpXaclewh9822Nn9Tz8R5%2FpDw3iwhLMGdvMoQ&wx_header=3
: 可以发链接啦?
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
首页
|
上页
|
2/2
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版