新兴但不热门的计算机类专业!人才缺口达327万,不愁就业!

thbcm阅读(304)

当谈及人才短缺问题时,许多学弟学妹们可能立刻会想到当前备受瞩目的人工智能领域。这确实是一个人才缺口大的专业,但它也相对热门,而“热门”往往伴随着激烈的竞争和人才市场的拥挤。

今天我们来看看另外一个同样面临人才缺失的学科。

据央视网报道,教育部最新公布的数据显示,到2027年,我国网络安全人员缺口将达到327万。国内已有34个高校设立网络空间安全一级学科,而高校人才培养规模为3万/年,许多行业依然面临着网络安全人才缺失的困境。

这一巨大的人才缺口凸显了网络安全人才的迫切需求,尤其是在数字化转型和网络攻防实战能力方面。

因此,今天我们来了解一下,人才缺口较大的网络空间安全专业的情况。


一、网络空间安全是什么

网络空间安全领域是一个多学科交叉的领域,它涵盖了计算机科学与技术、软件工程、信息与通信工程、电子科学与技术、控制科学与工程、数学、管理科学与工程以及法学等多个基础学科。

该专业旨在解决信息技术领域中的安全挑战,围绕内生安全、风险评估、安全策略与等级保护、安全防御、入侵检测与威胁感知、应急响应、系统恢复等安全技术方向,开展针对网络空间安全基础、密码学及应用、网络与系统安全、应用安全和信息内容安全的理论与方法、技术应用及管理等方面的研究。


二、网络空间安全主要课程

高等数学、线性代数、概率论与数理统计、离散数学、网络空间安全数学基础、高级语言程序设计、数据结构、数字逻辑、汇编语言程序设计、算法分析与设计、密码学导论、计算机组成原理、计算机网络、操作系统原理、应用密码学、信息论与编码理论基础、网络安全、网络空间安全与风险管理、网络入侵检测与防御、数字取证、信息内容安全等。


三、推荐院校

根据软科2024中国大学专业排名,开设网络空间安全的大学共有73所,排名前五的院校分别为:电子科技大学、西安电子科技大学、北京理工大学、北京邮电大学、东南大学。

具体排名如下



四、报考建议

1.结合个人实际状况,理智报考。避免盲目追随他人,应深思熟虑学科的难度、专业教育计划、培养目标和个人兴趣等因素,以理性的态度进行报考。

2.拥有坚实的数学功底至关重要。网络空间安全是一个跨学科领域,涉及计算机网络、信息与通信技术、密码学等多个专业。它要求将复杂的工程问题转化为数学问题,并运用多种数学工具进行求解。

3.对计算机和网络空间安全领域保持浓厚的兴趣。网络空间安全专业与计算机科学、密码学等学科紧密相连,需要深入学习计算机、数学、密码学等核心课程。

编程语言能统一吗,至少在语法层面?

thbcm阅读(315)

先说结论:不能。因为没有一种语言可以解决所有的问题。

编程语言的统一性是一个长久以来备受讨论的话题。在理想状态下,如果能够有一种编程语言,它既能够满足所有开发者的需求,又能在各种应用场景下表现出色,那无疑是非常吸引人的。

然而,现实情况却远比这复杂得多。

首先,我们需要认识到,编程语言的设计初衷是为了解决特定的问题。每种语言都有其独特的优势和局限性,这是由它们设计时的目标和使用场景决定的。

当一个人发明了一种语言,大家觉得它很不错,可以解决很多问题,但随着使用的人越来越多,大家会发现这门语言所能解决的问题是有限的。

这时候就会有一些人站出来说:我要发明另一种语言来解决这个语言无法解决的问题!

随着技术的发展和新问题的出现,开发者们不断寻求新的解决方案。这就催生了新的编程语言的诞生。

这可以对应到C语言、C++、Java的发展史。

C语言以其接近硬件的特性和高效的执行性能而闻名,非常适合系统编程和嵌入式开发。而C++则在C的基础上增加了面向对象的特性,使得它在大型软件项目的开发中更加灵活和强大。但是,C++的复杂性也带来了更高的学习成本和潜在的运行时错误。

而Java语言的诞生就是为了解决C++中的一些缺陷,如内存管理问题和平台依赖性。

Java通过引入垃圾回收机制和跨平台的虚拟机,大大提高了开发效率和程序的可移植性。但是,Java在性能上通常不如C++,特别是在需要高性能计算的场景下。

这种语言的多样性和专业化,虽然带来了选择的丰富性,但也带来了一定的问题。开发者需要根据自己的项目需求和个人偏好来选择合适的编程语言,这不仅增加了学习成本,也可能导致项目之间的技术壁垒。此外,不同编程语言之间的协作和集成也可能面临挑战。

尽管如此,我们也不能忽视编程语言多样性带来的积极影响。不同的语言可以针对不同的问题提供最优的解决方案,这有助于推动技术的进步和创新。

例如,Python以其简洁的语法和强大的库支持,在数据科学和人工智能领域取得了巨大的成功。而JavaScript则在Web开发中占据了不可替代的地位。

为了应对编程语言多样性带来的挑战,社区和行业也在进行一些努力。例如,通过标准化接口和协议,使得不同语言编写的程序能够更容易地进行交互和集成。此外,一些多范式编程语言也在尝试吸收不同语言的优点,以提供更广泛的应用场景。

在这个多元化的技术世界中,编程语言的多样性既是挑战,也是机遇。我们应该拥抱这种多样性,利用它来推动技术的发展和创新。

编程第一步,怎么选择适合自己的编程语言?

thbcm阅读(305)

选择编程语言是许多编程初学者经常面临的问题。到底要选择一门什么样的编程语言,才能在激烈的职场竞争中脱颖而出呢?许多人担心选择不当的语言会影响自己的竞争力。

因此今天我们一起来讨论一下这个话题,关于如何学习一门新语言、如何选择编程语言,以及所有方向的流行技术栈都有哪些。

希望能够减少新手们在选择上的困惑,把更多时间投入到学习真正有价值的技能上,并专注于实现重要的目标。

一、如何学习一门新的语言

学习新的编程语言无非两个步骤:

①学习语法

②做一些案例+项目

你想学习一门编程语言,在掌握一门编程语言的语法后,通过开展一些小型个人项目,可以有效地巩固和应用所学知识。

在探索不同编程语言的过程中,实践编写代码是加深理解和技能掌握的关键。

那么,我们要怎么决定该学习哪门语言呢?


二、编程语言选择建议


学习编程语言要结合具体的应用场景,从个人习惯到项目需求,语言没有什么最好之分,只有什么语言适合什么样的应用场景。

如果你学习编程是为了就业,那就选择一门与未来职业紧密相关的语言开始学,学到精通。

这里又分很多种情况,比如你追求快速就业,可以直接学Java;

更倾向于所写即所得、尽快看到效果,就选前端;更想锻炼思维逻辑能力,就首选后端Java或Go语言;

如果你以后的工作方向在嵌入式和硬件编程方面较多,那就选C语言。

如果你在软件行业工作,那么不应局限于特定语言,而应根据工作或项目需求灵活选择。

如果不是很明确未来到底从事什么工作方向时,可以试着去找下自己的兴趣方向,尽量让自己的兴趣和自己工作方向相结合。

如果你是非计算机专业的在校学生,或对编程仅出于兴趣,希望提升工作效率,Python是一个很好的起点,随着时间推移,你可以进一步学习其他语言。

总之,要有工具思想,语言仅是解决问题的工具,不要在语言选择上耗费过多时间,而应更多地关注如何找到自己的职业兴趣所在。


三、流行技术栈

前端开发:HTML / CSS / Javascript

后端开发:Java / Python

Go移动开发:Flutter / Android / iOS

数据分析:Excel / Python / R / SQL

大数据   :Hadoop / Hive / Spark

人工智能:Caff / Tensorflow / Pytorch

测试运维:SDN / Openstack / K8S

更多方向:产品设计 / UI设计 / 游戏

“鸿蒙PC版”部分应用UI曝光!有望挑战Windows吗?

thbcm阅读(291)

在2024年备受瞩目的华为开发者大会(HDC)上,华为携带其最新力作HarmonyOS NEXT隆重登场,为智能设备行业带来了一股清新之风。

作为鸿蒙操作系统的全新升级版,HarmonyOS NEXT在智能手机和平板电脑上首次推出了Beta测试版。

根据华为官方发布的升级路线图,预计到2024年年底,将有一大批设备陆续完成向纯正血统的鸿蒙操作系统的升级。

在HDC 2024结束后不久,华为开发者官网悄然更新了一份重要文档——针对2in1设备的HarmonyOS设计指南。该指南详细阐述了鸿蒙操作系统针对PC端应用的用户界面设计原则。

2in1设备融合了平板的便捷性与笔记本电脑的高效生产力,它们通常配备有可拆卸键盘和触控屏幕,允许用户根据需求在不同使用环境下自由切换模式。

为了打造出卓越的2in1应用或服务,开发者需要深入理解并充分利用2in1设备的独特属性,这包括其硬件配置、使用模式、交互设计以及适用的使用场景等多个方面。

在更新的设计指南中,我们看到了几个关键的应用界面:

一、窗口框架

● 窗口是系统中各个应用的载体,由容器层和内容区构成。

● 容器层用于展示应用品牌和控制整体窗口,内容层用于查看内容及与内容进行交互。

● 容器层元素

必选元素:窗口控制 (最大化、最小化、关闭)

可选元素:应用图标、窗口名称 (必要时,应用可进行适当删减)

● 应用示例_效率型应用

● 应用示例_沉浸型应用

● 当应用未做适配时,窗口提供默认的标题区背景、应用图标、应用名称以及窗口控制按钮。

二、窗口尺寸

● 每个窗口初次启动时按默认尺寸显示,支持拉伸为任意尺寸的窗口;支持最小化、关闭;应用根据自身情况选择是否支持全屏显示。部分应用可以选择允许窗口拆分为多个同等级别的窗口,或有主次关系的多个窗口。

● 除特殊情况外,所有的应用都应支持分屏。

默认尺寸:屏幕*67%

最小尺寸:360*240vp

三、分栏结构

● 内容层是应用展示信息的空间,应用需重点关注分栏结构、基于键鼠操作的多模交互以及控件相关规范。

● 2in1设备上的窗口分为三种形态,建议根据业务属性酌情使用。


原文链接:
https://developer.huawei.com/consumer/cn/doc/design-guides/design-concepts-0000001795698445

互联网寒冬VS基建饱和:计算机专业会重蹈土木工程的覆辙吗?

thbcm阅读(330)

随着高考落幕,考生和家长们开始着手专业选择与志愿填报,”热门”与”冷门”专业的话题引起了广泛关注。而计算机专业无疑是最受瞩目的专业领域之一。

在过去的十几年里,计算机专业以其出色的就业率和薪酬水平,一直被视为备受青睐的”热门”专业。

然而,近年来互联网公司的裁员潮,则引发了人们对计算机专业前景的担忧和质疑,与此同时,中国基础设施建设的逐渐饱和,使得土木工程领域面临需求减少和行业发展缓慢的困境。

这使得许多家长和考生开始焦虑:互联网行业真的不行了吗?未来计算机专业会怎么样?真的会变成下一个“土木工程”吗?



一、计算机行业与土木工程的比较

首先,我们来比较这两个行业的不同特点。

土木工程是一个重资产行业,其项目周期长,对基础设施的依赖性强,且常常受到地理、环境等多重因素的限制。

相比之下,计算机则是一个轻资产行业,它以快速迭代和创新驱动为特点,主要受限于技术发展和市场需求的变化。

从发展阶段和市场需求来看,土木工程随着基础设施的完善,新的建设项目减少,市场需求呈现减缓趋势。

而计算机行业的发展则依托于信息化、数字化的不断深入,人工智能、大数据、云计算等新技术的持续推动,对行业发展产生巨大影响。

二、计算机行业的发展前景

我们必须认识到,所有行业都会经历周期性的起伏,互联网和计算机行业也不例外。

目前,互联网公司正面临裁员和紧缩运营的阶段,这是由多种因素共同作用的结果。

一方面,这个行业在经历了过去十几年的快速扩张之后,基础设施建设已基本完成,开始转向存量市场和优质资源的竞争,这自然会导致对人才的需求减少。

另一方面,以ChatGPT和Sora为代表的生成式人工智能技术的迅猛发展,大幅降低了市场对低端码农的需求。同时,全球经济的不确定性增加,也导致科技公司的投资和增长预期降低,对就业市场产生了影响。

然而,正是技术的快速进步,尤其是生成式人工智能的出现,为计算机行业带来了新的机遇和可能性。新技术的出现不仅带来了挑战和不确定性,也在重塑整个计算机行业的格局。

这场由大模型引领的变革,预示着计算机行业将迎来翻天覆地的变化,低端脑力劳动者和低端码农很可能面临被淘汰的风险。

要想在AI大模型时代立足,有三条明确的路径:一是成为善于使用工具的人,二是成为不可被工具替代的人,三是与工具共同成长的人。这意味着,那些既懂产品、又懂需求、还懂技术的复合型人才将持续受到追捧。

从企业招聘趋势来看,初级开发人员的需求已经大幅减少,企业更愿意以高薪吸引中高级开发工程师。

相关报告也显示,我国计算机行业对高端人才的需求巨大,中高端人才市场供不应求。

以人工智能、大模型、算力等为代表的新兴技术领域,对IT人才的需求仍在持续增长。

在大学读计算机专业,应该买笔记本还是台式机?

thbcm阅读(855)

高考结束,对于报考计算机专业的同学来说,面对即将开始的大学生活,购买电脑是一个绕不开的话题。

那么问题来了,到底是买台式机还是笔记本呢?

台式机性能强悍,可操作性强,配件可以随时更换,但机动性差;而笔记本机动性强,易于携带,但相比之下,同价位的台式机和笔记本,后者的性能就没那么能打了。

下面分享一下我的看法:我的建议是买笔记本,并且是游戏本。


如果预算充足,那就直接上那种质感好、轻薄的游戏本;如果预算比较紧张,选那种结实耐用、塑料壳的游戏本也可以。对于大学生来说,没有太多东西是台式机能做而游戏本做不了的。

计算机和软件专业的学生,专业课程里对性能要求最高的可能就是训练人工智能模型。但除非你拥有配备多个显卡的高端台式机,否则你游戏本上跑不动的模型,台式机也未必能搞定。

一个大内存的游戏本足以应对大多数项目需求,不管是分虚拟机做网络实验,还是用容器跑微服务,都绰绰有余。

在游戏性能方面,现在的游戏本,哪怕是入门级别的,配置也足够让你畅玩大部分单机游戏。台式机相比游戏本,主要优势在于提供更高的画质和帧率。

但事实上,许多游戏性出色的游戏,其画面并不需要特别高的配置,对性能要求也不高,笔记本完全能胜任。

并且对于大学生来说,笔记本的便携性和电池使得它的可用性大大提高,从这方面来看,笔记本能做的,台式机做不了的事太多了。

计算机专业的课程中,电脑的使用频率极高。尽管许多学校设有机房供学生使用,但实际情况往往是,你需要随身携带电脑去实验室完成实验任务,或者在机房的电脑性能不佳或数量不足时,拥有自己的电脑就显得格外重要。

还有一些场景,比如你需要和小组同学一起讨论、协作完成作业,这时你只能拿着笔记本。

宿舍晚上断电,但你还有个作业没做完,需要熬夜完成,这时你需要笔记本的电池。

娱乐方面也是,聚到一个寝室开黑、断电后打游戏,有个笔记本都是更方便的。

还有就是除了在学校使用之外,大部分同学在放假期间会选择把电脑带回家,此时也是笔记本电脑更便于携带更占优势。

……

最后补充两点:一是即使你暂时不打游戏,也推荐买游戏本,因为它们的性能和扩展性更强;二是直接在线买,别去线下电脑城,避免被坑。

编程的难点在哪?是逻辑、算法,还是模块、框架的掌握?

thbcm阅读(284)

很多新手程序员在一开始都是满怀热情地投入到编程的学习,但却在学习过程中处处碰壁,导致放弃。

编程的难点在于逻辑、数学、算法,还是模块、框架、接口的掌握?但这些仅仅是编程语言中的设计模式,只要你愿意投入时间和精力去学习,哪怕是通过重复记忆,也能够熟练掌握这些知识。它们并非编程的真正难题。

那么,我们为什么会觉得编程难呢?我们又该如何攻克这些难点?我们一起往下看

一、不知道从什么技术入手



在编程的世界里,选择正确的起点往往让人困惑。许多人在开始学习编程时,会问自己:“我应该从哪种编程语言开始?”

这个问题的背后,是他们对学习编程的目的尚不明确。当你有了明确的项目目标时,选择编程语言就变得简单许多。

如果你想构建iOS app,那么你需要学习Objective C或Swift。

如果你想构建Android app,那么你需要学习Java。

如果你想构建Web app,那么你需要学习JavaScript。

……

如果依然犹豫不决,那么不妨咨询下某个程序员的意见。一旦你明确了你的项目目标,那么他就能很快地为你推荐适合你使用的技术。

实际上,选择语言的过程风险相对较小,因为不同的语言之间往往有许多共通之处,这使得从一种语言过渡到另一种语言变得更加容易。

二、不能学以致用,以及责备自己



学习过程中,理论知识的学习相对容易,但最大问题玩玩出现在应用理论来解决问题并编写新代码的时候。这中间的差距实际上就是技能空白。

很多人做不出项目,会认为自己不够聪明,或者没有天赋,其实不是的,你只是需要练习技能的过程。

三、不吸取解决任务中获得的经验教训



如果你顺利完成了一项任务,不要急于进入下一个,相反,应该反思并从中学习。这样才不会浪费一个绝佳的学习机会。

可以多问问自己:代码是否能够应对边界情况?它是否足够整洁,易于理解和维护?你的解决方案是否最优?代码与其他模块的交互是否顺畅?……

这些反思将帮助你成长。

四、你不知道如何处理一个任务



当你面对一个任务感到无从下手时,你可能会随机地去尝试,或者从其他地方复制一些你自己也不明白的代码。不要这么做,理解你为什么会遇到障碍是解决问题的第一步。

可能是因为理论知识掌握不牢固,或者任务过于庞大,需要分解为更小的部分,或者你忽略了一些关键概念。无论原因如何,找到它并解决它。

五、你知道如何解决任务,但解决方案不管用



这是编程中最常见的情况,哪怕是那些经验丰富的资深程序员也是如此。你的解决方案之所以不起作用最大的可能是你的代码中存在着bug。

这时,调试代码的能力就显得至关重要。很多人担心会花太多时间用于调试代码。这是正常的,在你第一年的编程规划中这是不可避免的。

调试不仅是修复bug的过程,也是提高编程技能的重要途径。

六、不知道如何接受帮助



在学习过程中,不要只是被动接受帮助。当你从书籍、课程、教程或社区中获得帮助时,要深入理解背后的原理和概念。

例如:你在某个问题上花了10小时,最后终于有人提供一个解决方案,你往往会采取“拿来主义”——采纳解决方案之后就直接跳到一个任务中去。千万别这样做。

当别人提供了解决方案,不要急于应用,而是要思考自己的思维过程,了解哪里出了问题,以及如何改进。同时,了解他人的解决思路,从中学习。

———-



最后,不要忽视将学到的理论知识应用于实践。编程是通过不断实践,形成良好习惯来解决问题的过程。只有将理论应用于实践,才能真正掌握编程技能。

前端工作原来有这么多层级!你最想做哪一层?

thbcm阅读(319)

现在前端开发的工作远不只切图那么简单,前端工程师的工作内容变得极为丰富和多样化:

开发前端框架、做SDK、搭建平台、打造工程化工具链、业务开发,更有一些工程师参与到更深层次的引擎开发中,比如定制JavaScript引擎或实现渲染引擎等。

面对如此多的前端工作类型,它们之间存在什么样的联系?前端工作具体包括哪些种类?我们一起看看~

前端工作的五层

前端的工作大概可以分为五层,从下到上分别是引擎层、runtime层、工具层、业务层、搭建层。

1.引擎层

现代前端代码不再局限于浏览器作为其运行环境。事实上,前端技术已经扩展到了多种不同的容器。例如,Electron允许开发者使用前端技术栈进行跨平台的桌面应用开发。

此外,React Native、Weex等框架,以及一些自研的跨端引擎,可以用前端的技术栈来开发Android和iOS平台的应用程序。

这些容器的实现通常基于对JavaScript引擎的扩展,如V8、JavaScriptCore。它们通过注入DOM API和设备能力的API,以及实现渲染引擎来实现对不同平台的支持。这些渲染引擎根据不同平台的需求来实现CSS的渲染。

JavaScript引擎的定制和渲染引擎的实现往往基于C++语言。因此,一些精通C++的前端开发者会参与到这些技术的开发中。例如,阿里巴巴的Kraken渲染引擎就是由前端团队开发的成果。

2.runtime层

一旦引擎或容器实现了W3C标准API,开发者便可以使用前端技术栈来构建应用程序。然而,W3C的API通常较为基础,因此我们通常会引入前端框架和SDK来提升开发效率。

这些前端框架通过组件化和数据驱动的渲染机制,允许开发者专注于数据管理,而不必直接操作DOM API。数据的任何变化都会自动触发DOM API的调用,实现界面的重新渲染。

部分前端开发者的职责是维护这些前端框架和SDK。例如,百度的San框架、阿里巴巴的跨端框架Rax等,以及众多的JavaScript SDK。

3.工具层

引擎提供了JavaScript执行和CSS渲染的能力,但在实际开发过程中,我们可能不会直接编写原生的JavaScript或CSS代码。

相反,我们倾向于使用TypeScript、ES Next等现代JavaScript变体,以及LESS、Sass等CSS预处理器来提升开发效率和代码可维护性。这些代码在运行前需要经过编译过程。

为了更有效地分发代码,我们还会进行代码打包。在编译之前,代码还会经过linting(代码检查)来确保代码质量和一致性。这些步骤构成了工程化工具链的一部分,有些前端开发者专注于这一领域的工作。

4.业务层

引擎赋予了前端代码执行的能力,而runtime层则提供了用户友好的前端框架和SDK。

工具层进一步提供了即插即用的编译和打包工具链,这些工具链为业务开发提供了极大的便利,业务开发人员可以快速地利用这些工具来满足业务需求。

大部分前端开发者的工作集中在业务开发层,而这一层也是其他各层服务的核心。毕竟,业务是公司运营和发展的根本。

5.搭建层

为了提升交付速度并释放前端开发人员在业务层的生产力,越来越多的企业开始开发可视化构建平台,供非技术人员自行实现特定的需求,从而使前端开发者能够将更多时间投入到其他层面上,处理更具挑战性的任务。

许多公司都设立了专门的前端团队来开发和维护这些构建平台,目的是直接满足一系列常见的业务需求。

————–

不同公司的前端团队可能会侧重于这些层次中的不同部分,这五个层次的完善程度直接影响了前端工作的深度和广度。

层次越全面,前端开发者能够参与的工作就越多样化,从而推动技术能力和业务创新的发展。

对于前端开发者来说,思考自己目前所处的层次以及未来希望发展的方向是非常重要的。细想一下,你的工作是在哪一层呢?或者更想做哪层的工作呢?

哪种编程语言最省电?编程质量与耗电多少有关吗?

thbcm阅读(339)

能量使用数据是否能告诉我们编程语言的质量?

六位来自葡萄牙三所大学的研究人员针对这一问题进行了研究,并发表了一篇名为《编程语言的能效》的论文。

他们使用27种不同的编程语言实现了10个问题的解决方案(均采用相同算法),随后执行这些解决方案,并记录了每种语言的电量消耗以及运行速度和内存占用情况,结果如图示

这项研究揭示了一些有趣的发现:并非所有运行速度快的编程语言都具有低能耗。

虽然C语言通常被认为是速度最快的,并且在节能方面也表现优异,但在对DNA数据库进行特定基因序列扫描的基准测试中,Rust语言显示出了更低的能耗,而C语言则排在第三位。

此外,”最佳”编程语言的评定标准也因测试的不同而异。例如,在一次测试中,C语言在内存使用方面排名第二,而Rust排名第一;但如果按照内存使用排序,Rust的排名会下降9位。

为了确保研究的可比性和代表性,研究者采用了Computer Language Benchmarks Game提供的10个标准算法问题进行测试。进行各种基准测试是至关重要的,因为不同的测试会得出不同的结果。

总体来看,尽管C语言在速度和节能方面通常被认为是最优的,但在涉及扫描 DNA 数据库中特定基因序列的基准测试中,Rust 是最节能的,而 C 语言位居第三。

运行速度快的语言更节能吗?

虽然普遍认为程序运行速度的提升可以降低能耗,但研究者们明确指出,”并非所有运行速度快的语言都更节能”。

研究者们通过分析实验结果,得出了一个结论:CPU消耗了大部分能量,大约平均占 88%。

此外,他们还发现 DRAM 的峰值使用量与能耗之间几乎没有直接联系。这项研究为一个长期存在的问题提供了解答:”速度更快是否意味着更环保?”

是的,当按照执行时间排序时,前5名最节能的语言在能源效率上也几乎一致。

实际上,在10个基准测试中,有9 项测试的最优结果是由速度最快且能源效率最高的三种语言之一获得的,这并不出乎研究者们的预料。

众所周知,C、C++ 和 Rust 这三种语言因其高度优化而在执行性能上表现出色。

然而,当对其他24种语言按照运行时间进行排名时,情况则有所不同。只有OCaml、Haskell、Racket和Python这四种语言在能耗和时间排名上保持一致,而其他语言的排名则出现了较大差异。

即便在单一基准测试中,也存在一些速度快但并不节能的语言。

编译型语言的优点

编译型语言似乎是最节能和运行最快的语言,这一点在论文中通过具体的数据得到了量化。

根据研究,编译语言需要花费120J能量来运行解决方案,而虚拟机和解释型语言要分别花费576J和2365J。

在执行时间的对比上,研究者也采用了相同的精度,得出的结论是:平均而言,编译语言花费5103毫秒,虚拟机语言花费20623毫秒,解释型语言花费87614毫秒。

两项排名中的前4名均为编译型语言(有一个例外,Java语言)。

5种最慢的语言都是解释型语言:Lua、Python、Perl、Ruby和Typescript。

5种能耗最多的语言也都是解释型语言:Perl、Python、Ruby、JRuby和Lua。

但同时,在使用正则表达式操作字符串时,5种最节能的语言中有三种(TypeScript、JavaScript和PHP)是解释型语言。尽管在其他情况下,它们往往不是很节能。

编译型语言在占用内存最少的排名中也占据了前5名。

研究者指出,平均内存使用量方面,编译语言为125Mb,虚拟机语言为285Mb,解释语言为426Mb。

4种解释型语言内存消耗最高。

按编程范式排序,命令式语言平均使用116Mb,面向对象语言249Mb,函数式语言251Mb,脚本421Mb。

命令式编程在能源消耗和运行速度上通常优于其他范式。

研究者强调,编程范式和语言对能耗、时间和内存的影响各异,且重要性取决于具体需求。

例如,后台任务可能不需要极速运行。某些应用需同时考虑能耗和时间,C语言在这两方面表现优异。

若要同时节省内存和时间,C、Pascal和Go是合适选择。若考虑时间、能耗和内存三个因素,C和Pascal在节能且内存使用少方面表现最佳。

原文链接:

https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf?utm_source=thenewstack&utm_medium=website&utm_campaign=platform

想学网站开发?先来测测你是天生的前端大神还是后端王者!

thbcm阅读(332)

有些人觉得前端开发比较容易上手,而后端开发则相对困难。另一些人则持相反观点,认为前端开发不易掌握,而后端开发则相对简单。

整体来看,前端入门相对容易,但随着技能的提升,难度也会逐渐增加。开发过程中可以看到自己制作出的直观展示界面,这能带来较强的成就感。

而后端入门较难,深入更难,工作内容可能显得单调,缺乏直接的成就感,因为常常需要处理复杂的业务逻辑代码。

前端和后端的工作内容和职责是截然不同的,它们各自专注于软件开发的不同方面。我们一起来了解一下!

1.展示方式



前端开发负责创建用户能够直接看到的界面,也就是网页的外观设计和功能实现,包括页面上的动画效果、布局结构、图像、视频和音频等元素。

后端开发则处理用户不直接看到的部分,主要与前端工程师进行数据交换,负责网站数据的存储、管理和检索。

与前端相比,后端开发涉及更多的逻辑代码编写,重点在于实现底层的业务逻辑、确保平台的稳定性和性能。

2.所用技术



前端开发用到的技术包括但不限于html5、css3、javascript、jquery、Bootstrap、Node.js 、Webpack,AngularJs,ReactJs,VueJs等技术。

后端开发,以java为例,主要用到的是包括但不限于Struts spring springmvc Hibernate Http协议 Servlet Tomcat服务器等技术。

3.工作职责



前端工程师的工作主要分为三个核心领域:传统的Web前端开发、移动应用开发以及大数据可视化。

Web前端开发专注于为个人电脑(PC)用户创建交互式的网页体验。移动应用开发涵盖了Android、iOS以及各类小程序的开发,随着移动互联网的快速发展,这一领域的开发需求日益增长。大数据可视化则侧重于在现有平台上展示数据分析结果,常见的展示形式包括大屏幕展示等。

后端工程师的职责同样聚焦于三个主要方面:系统架构设计、接口设计和业务逻辑实现。

系统架构设计涉及到构建后端服务的基础架构,为整个平台提供支撑。接口设计则是根据不同行业的需求,设计相应的功能接口。业务逻辑实现则是开发具体的功能,确保系统能够按照预期执行各项任务。

4.知识结构



前端开发涉及到的内容包括Html、CSS、JavaScript、Android开发(采用Java或者kotlin)、iOS开发(采用OC或者Swift)、各种小程序开发技术(类Html),随着前端开发任务的不断拓展,前端开发后端化也是一个较为明显的趋势,比如Nodejs的应用。

后端开发通常需要根据业务场景进行不同语言的选择,另外后端开发的重点在于算法设计、数据结构、性能优化等方面,在具体的功能实现部分可以采用Java、Python或者PHP等编程语言来实现。

——–

在数字时代,网站已成为企业、机构乃至个人的重要门面和沟通平台。而网站的开发,离不开前端和后端两大核心力量的通力协作。

前端开发如同网站的化妆师,负责呈现用户直接感知的视觉效果和交互体验;后端开发则如同网站的大脑,负责处理复杂的业务逻辑和数据交互,确保网站稳定运行。

两者相辅相成,共同构建起功能完善、体验流畅的网站应用。

联系我们