电脑编程要学多久
1个回答
展开全部
首先你应该明确知道,自学编程你的目的在于什么?仅仅为了兴趣,还是想把他变为一技之长,成为自己谋生的技能。
如果仅仅是为了兴趣,你只需要利用空余时间即可;但如果想要作为以后工作的方向,在前期则需要投入大量的时间进行学习编程,在从事相关工作以后,也需要不断进行学习提升编程技能。学编程,更重要的是在于自主学习能力。
就好比,你在读书期间,同样的时长,同样的老师,但是一个班的学习成绩参差不齐,他们之间的差别就是在于学习能力。如果自主学习能力较强,自学编程对你来讲会相对容易,你需要是时间的累积和长期的坚持。
对于自主学习能力较弱的同学,不建议采用自学的方式。因为当在自学过程中遇到问题不能解决,会形成一种挫败感,长此下去自学的动力日渐消沉。
相关挑战:
(1) 该模型的编程接口能支持的并行模式有限,需要丰富编程接口,表达多种多样的并行性。例如,spawnsync 能够实现嵌套并行控制结构,但不能高效实现循环级并行,于是,程序员需要把数据并行的应用程序转换成嵌套并行,才能用该模型编写并行程序。另外,无条件原子块结构和有条件原子块结构是重要的并行任务结构,如何表达以及如何高效支持都需要深入研究;
(2) 该模型把数据分为共享和私有两种,通过共享数据进行通信。但有些数据是部分任务共享,或者一个线程内执行的所有任务共享,因此需要对数据进一步区分共享范围,需要研究如何高效实现不同级别的共享数据。
(3) 该模型的运行时系统负责把逻辑任务映射到物理线程上去执行,其核心任务是提高执行效率存在的问题有:
(a) 运行时系统是一个软件层,与应用程序链接在一起,运行在用户空间上。用软件实现任务窃取是有代价的,问题是能否进一步降低运行时系统开销;
(b) 任务窃取采用最早任务优先窃取策略,该策略的“深度优先执行”能够提高 cache 的利用率。但随机选择线程进行任务窃取,而没有考虑多核处理器的存储层次和处理器架构特点,对于局部性敏感的应用会产生影响。因此,任务调度时需要根据存储部件的层次、容量、访问延迟以及数据的访问局部性、重用度和层次性等因素进行局部性敏感的调度;
(c)集群系统和众核处理器都远比多核处理器要复杂,拥有更大量的计算资源,如何管理和使用硬件资源,充分利用体系结构的并行性和局部性来提高性能,也需要深入加以研究 。