- 主题:c++太复杂了,我承认这几行代码我一辈子写不出来
技术领域的“朴素”可能也是分阶段的
对于Pure C和legacy c++这个阶段,和对于modern c++这个阶段,“朴素”可以有不同的解释。对于熟悉modern c++的人来说,楼主的代码是很容易看懂的
用别的语言(比如Rust)来实现可变参数的线程池的任务队列,也有那个语言特有的抽象方式,要掌握同样有学习成本
【 在 wrapper (wrapper) 的大作中提到: 】
: 伟大的文学作品语言一定是朴素的.莫言
: - 来自 水木社区APP v3.5.7
: 【 在 smartbear 的大作中提到: 】
: : C++真正做过大项目的高手,都是用C风格写C++
--
FROM 122.96.33.*
熟悉现代c++其实挺难的。。
【 在 z16166 的大作中提到: 】
: 技术领域的“朴素”可能也是分阶段的
: 对于Pure C和legacy c++这个阶段,和对于modern c++这个阶段,“朴素”可以有不同的解释。对于熟悉modern c++的人来说,楼主的代码是很容易看懂的
: 用别的语言(比如Rust)来实现可变参数的线程池的任务队列,也有那个语言特有的抽象方式,要掌握同样有学习成本
: ...................
--
FROM 222.129.50.*
GPT5给了个更现代的写法,替换了不再使用的一些废弃方式。我也不知道写的咋样,没细看
class ThreadPool {
public:
template <class F, class... Args>
auto Enqueue(F&& f, Args&&... args)
-> std::future<std::invoke_result_t<F, Args...>>
{
using return_type = std::invoke_result_t<F, Args...>;
// 用 lambda 代替 bind
auto task = std::make_shared<std::packaged_task<return_type()>>(
[func = std::forward<F>(f), ... args = std::forward<Args>(args)]() mutable {
return std::invoke(std::move(func), std::move(args)...);
}
);
std::future<return_type> res = task->get_future();
{
std::unique_lock<std::mutex> lock(queue_mutex);
tasks.emplace([task]() { (*task)(); });
}
condition.notify_one();
return res;
}
private:
std::mutex queue_mutex;
std::condition_variable condition;
std::queue<std::function<void()>> tasks;
};
--
FROM 114.222.60.*
这个比我的例子还要炫酷,语言特性还要多,还要晦涩。看这些代码,我就像看一个超模一样,瘦削干瘪,神情冰冷,炫酷得要命,但是又拒人于千里之外。
【 在 jjjrrrbbb 的大作中提到: 】
: GPT5给了个更现代的写法,替换了不再使用的一些废弃方式。我也不知道写的咋样,没细看
: class ThreadPool {
: public:
: ...................
--
FROM 222.129.50.*
我们这里两个大项目,
一个是这种看不懂的语法满天飞,
另一个是平铺直叙的写法,
现在第一个快要被第二个取代了
【 在 adamhj 的大作中提到: 】
: 因为团队工作是一群人干活,你能看懂不代表别人能看懂,你用一些复杂的语法,等于是要求团队里别人也能看懂使用这些语法,提高了对人员的要求,也就相当于提高了企业的招工要求,提高了企业的招人难度和成本
: 所以为啥用工市场java这种语言最吃香,因为门槛低,并且在门槛低的同时还相对不容易犯错
:
--
FROM 125.33.201.*
说到晦涩难懂,rust说第二,没人敢说第一,当然,rust程序员能力都不差。
【 在 z16166 的大作中提到: 】
: 技术领域的“朴素”可能也是分阶段的
: ...................
--
FROM 183.242.243.*
把 c++ 的模板语言看成是在编译期执行的函数式编程语言就比较容易理解了。
这东东写库的时候有用。日常业务逻辑不要用。
【 在 buildtolast 的大作中提到: 】
: template <class F, class... Args>
: auto ThreadPool::Enqueue(F &&f, Args &&...args) -> std::future<typename std::result_of<F(Args...)>::type> {
: using return_type = typename std::result_of<F(Args...)>::type;
: ...................
--
修改:hgoldfish FROM 117.24.217.*
FROM 117.24.217.*
一个天天热衷于语法上雕花的语言,天天以玩弄密宗语法为乐,沉醉于自我陶醉的智力优越感中
正经的辅助开发工具、库和框架一个不干,我愿称之为编程行为艺术
别的语言没这些不也照样写程序
--
FROM 113.90.130.*
恰恰相反,这才是精简的设计。
最简单的办法,是把楼主那个代码丢给AI,让ai用js、rust等语言写出等价的函数,对比一下
【 在 god4 (昵称) 的大作中提到: 】
: 复杂倒也没那么复杂,但这几行代码确实是设计上的垃圾,既无美感,而且根本没必要
: --
:
:
--
FROM 220.205.233.*
不是设计出来的,是重构出来的
【 在 z16166 的大作中提到: 】
: 恰恰相反,这才是精简的设计。
: 最简单的办法,是把楼主那个代码丢给AI,让ai用js、rust等语言写出等价的函数,对比一下
: --
: ...................
--
FROM 104.156.253.*