我想学习编程,但是不知道该怎么开始。
我建议最好是从基础入手,而不是一开始就进行可视化编程。虽然如今国内绝大多数pc都是使用的windows,但是毕竟这知识这个世界的冰山一角。扎实的基础自然会更有用处。编程其实重要的是程序思维,然后是算法和数据结构。这些都是超出语言的,就是说不管是学c学java学delphi还是别的什么,这一部分都是一致的。因此培养这部分的知识可以说是一本万利的事情。初学肯定是通过语言熟悉思想熟悉算法和数据结构,到一定的时候就是纯粹的思想和算法数据结构的学习,便已经脱离程序语言了。经历过这些阶段,换一种语言不过是重新了解一下描述的方式,就像你了解了中文思维,山东话和四川话的差别就不会太大;了解了拉丁语的思维,整个语系的语言都不过是简简单单的记忆工作,应用就好。入门的语言,理论上是怎么方便学哪个,看那个顺眼学哪个。当然这里面还是有不同的推荐的。一般来说我比较推荐pascal、c/c++、java。并不是因为这三个东西很通用很有前途,而是它们实在是严整而有规则(c/c++还显得稍微的宽松了一点),而严谨的语法要求和明确的概念区分是有利于编程思维的形成和算法数据结构的学习的。同样的因为这个理由我不推荐vb,而并不是因为它功能不强大(事实上vb在windows环境中是相当牛的语言)另外一个建议是,如果学c,不要一开始就用vc。ms提供的很多东西很方便,有很多很简单的实现方法,但是它们不标准。vc与ansi
c标准是有很大的差距的。首先一个不遵循标准的c/c++程序是不通用的,换个编译器说不定就不被承认了。所以我非常推崇gcc,理由之一是它完全符合
ansi
c标准,无论它的c还是c++编译器都很严整,功能上一点也不缺乏(有人说gcc不能做图形界面的程序,这一点完全错误,到处都有的qt库和gtk库都能做出很好的界面),另外一个理由便是它免费,毕竟稍微大一点的软件企业就不会屈从与微软的编译器和平台,而一个免费的c编译器无疑可以创造更多的利益;就算要转vc,标准的c程序也是几乎不要作任何改动的。当然,这一切的前提是,你真的很想很好的学编程,做一个这方面的精英。如果只不过是兴趣,或者只是想拿一个ms的工程师认证然后在国内企业找份诸如设计vf、vb程序之类的工作,那完全可以忽略我上面的话,去找个认证培训班,认认真真听听课,好好完成练习,从vb或者vc入手,考好认证是很不会太难的。毕竟现在很多很好的大学里都从来不缺乏计算机的课程,不会缺少算法或者编译原理的课程,不会没有计算机科学的研究院,而那里面出来的人一般都具备了很好的基础知识,会更加容易成为前面所说的精英。
对比Go 语言,Rust 有什么优势和劣势
对于Rust的优势我的体会如下:
* Error Handling机制好太多,用Result封装函数运行结果灵活性大大提高,代码也大大简洁
* 函数式编程支持较好,有Lambda这种东西,使得它写起来甚至有Ruby的感觉
* 效率高,没有了GC和Runtime,速度是没得说的
* 支持范型
* 有宏和编译器插件这些黑客技,语言扩展性较好
* 社区活跃度更高,更强调社区的作用,有[RFC](GitHub - rust-lang/rfcs: RFCs for changes to Rust)。[中文社区](Rust China)也有了
Rust的劣势是:
* 语言特性复杂,对新手就不会那么友好
* 稳定性不够,语言的进化较激进
* 第三方库的成熟度还落后于Go,商业化的应用也还不够
想学编程不知道从哪里开始??
1、先要确定自己学编程是要干什么?
2、再来找相对应的编程语言。
科普一下
编程语言:C、C++、Java、C#、Prolog、VB、Scala、Clojure、Haskell、Ada、Python、Ruby、Pascal(Delphi)、Fortran、Lisp、matlab、Perl、Erlang、Boo、Tcl、Bash、C
shell、Objective-C、PHP、PL-SQL、Transact-SQL、ASP、JSP、Lua、smalltalk、R、D,golang,Rust
涉及到的工具:sed、awk、grep
我们现在学一门语言,大部分是要用到了才学(基本上是中国的公司用什么我们学什么),基于兴趣的不多。
解决问题case:已知大量事实,和事实之间的约束,要求挖掘关系。
果断用prolog族语言。
例如,汉诺塔、地图着色、数独问题、八皇后问题等这种考验智商,并且需要从已知规则中发现模式的问题。拥有一大堆已知案例的应用(例如大部分的人工智能情况)
除非你是研究者,程序员一般是遇不到这种问题的。当然顶级的程序员也确实得具备解决这些问题的能力。但是他们就算解决也是用c解决的。这属于叫好不叫座的科研型语言。
应用程序case:从小到超大型应用程序,非完全互联网应用
这也是大部分软件公司遇到的情况。一般有几种没办法分出高下的解决方案:C++,Java,C#,VB。当然,这里面可以有CLR和JVM的不同衍生。例如,理论上,你也可以用scala来代替(不过估计大型公司不会冒这个险)。还是在理论上,你也可以用函数式编程的Clojure和Haskell来做(估计没人会那么傻)。还是在理论上,也可以用Ada这种强悍的通用语言,但估计没人愿意接受比C++还复杂的编程语言。理论上(基本只能在理论上),不嫌弃的话smalltalk也行。还是在理论上,python、ruby等配合一定的图形界面库也可以胜任(但项目大到一定的程度是,你会欲哭无泪)。
但是,我另起一行。有个语言:D语言。我个人不认为不可以列入首选名单。但是貌似知名度不行啊。。。。企业支持少啊。。。。。确实是门优秀的语言。C++太尾大不掉,需要一种语言,让C++成为纯粹的C++。
最近谷歌强势的推出了golang,背景是后台程序员C++写的好的太缺,python写的后台实在是效率不行。于是一个在这之间的,注重工程管理的,并且是全静态编译的golang诞生了,你会发现其拥有C++匹配的效率,也拥有python般丰富的编程库。其go和channel机制着实让人着迷,一出来就吸引了大量的后台开发人员,有的公司甚至后台全面转向go。但是其之前版本的内存回收机制比较烂,所以也有无数坑。现在的golang已经基本解决了这些问题,编译器也用golang重新实现了。可以说已经产品化了。
与golang竞争抢这个市场的还有rust,这是一个为并行而生,意在取代c++的编程语言。与golang的定位是相同的,但是目的是不同的。rust复杂,很复杂,上手难,但是一旦你掌握,这将是一个很强大的武器。已经有公司放弃golang转向rust的。但是这个语言的致命缺陷就是复杂,我们已经有一个复杂的C++了,他啥都能干,还要一个rust做什么?当然,我不能把rust拍死,毕竟这门语言的牛逼程度时比较逼近C++的。不过我高度怀疑其会较好不叫座。
稍小一点规模的,无法接受面向对象的程序员,有不少用C的。虽然OOP程序员看他们像是不开化的人,但是他们有他们的哲学(我从嵌入式开发过来,相当长时间内也摆脱不了C,总本能的排斥OOP),但是如果读者是一个nginx或者其他的c底层基础设施绝对会对oop嗤之以鼻,内核的编程范式已经给c下了一个什么叫对什么叫错的定义了。由于内核作为标杆,大家竟然同步的统一了编程风格。不用商量。nginx给那些歧视c的人上了生动的一课,现在哪一个互联网公司能离开nginx?
解决问题case:程序规模不是很大的偏数学问题
曾经很多人用Pascal(包括扩展的Delphi),曾经很多人用Fortran,但是都明显在退步。大型通用语言(C++、Java、C#)表明了他们在各种环境的适应能力。lisp系列也在一些问题上展现出古老的魅力。(但这个语言远没有《黑客与画家》的作者给我们描述的那样神奇,个人认为。不过我的C++风格思想占了主导,可能没办法公正的评价lisp,但是据我的使用lisp经验,在大部分情况下,我最后还是放弃了它。因为大部分情况下我总能找到用C++(或其他OOP语言)更好的原因)
另外,读研的一般都用过matlab。这个工具,两个字:强大!不过仅指科学计算方面。脱离了这个方面,就得考虑合不合适了,毕竟固定的矩阵思维不是啥情况都有效的。我用matlab最多的是神经网络,图片和信号处理。毫不夸张的说,matlab活脱脱一个photoshop啊。。。(当然,你得会用。。。)不过matlab的神经网络确实不行,做的太差了,小规模的网络可以,3层不用BP的F网,几十个就挂掉了。有这个需求的用ANN吧。(还是C++,偷笑)
特殊应用case:需要大量处理字符串的应用
首选利器是Perl,不过如果你习惯了sed、awk、grep,也能很方便的完成相同的功能,但perl是吸收三家所长做的。
其次是C++,别拍我。诸位用过regex吗?就是boost里的那个,最近被并入C++11啦。有了正则表达式的C++,处理字符,无敌了很多哇。当然,Java程序员别拍我,我知道这种库一个大型的通用语言都会有。我提C++,一般顺带着不否定Java和C#能以相似的代价完成相同的功能。
特殊应用case:需要一个胶水,粘结不同语言写出来的程序
首选是python。俩字:精简(呀,这么说一个强大的语言有点太轻浮了,但比起ruby,确实简单呐。。。)(另外Boo在.net是可以用来取代python)
有什么大型的沙盒游戏
1、Grand Theft Auto V(GTA5)
常年稳居销售榜TOP1的《侠盗猎车手5》是由Rockstar North制作的一款以犯罪为主题的动作游戏。在游戏中,玩家扮演城市中的犯罪角色,透过完成一连串有组织罪案的任务来提升自己的威势,任务通常为枪战、抢银行、行刺等,其他犯罪以外的任务则有驾驶出租车、救火、赛车、飞行等。自由度爆高,炒股遛狗逛夜店,那些你在现实里能干的事儿几乎都能干!
2、Rust(腐蚀) 103元
《腐蚀》是由Facepunch Studios公司采用Unity 3D制作的一款末日生存游戏,采取PVP模式,在游戏中需要克服重重外界困难,与玩家结盟或者掠夺资源,达到活下去的目的。但是要记住,野生的队友并不可靠。游戏体验非常黑暗,玩家之间的利用、背叛、抢夺、杀戮很常见,可以说如果你不是和一个好基友一起进行游戏,整个游戏过程将会非常艰辛,必须时刻保持着高度的戒心,真的是人心险恶!
3、ARK:Survival Evolved(方舟:生存进化)
《方舟:生存进化》是Wildcard工作室制作的一款第一人称生存探险沙盒游戏,由虚幻4引擎打造,画面精良且逼真。游戏融合了多人协作和竞技玩法,曾多次登顶Steam热销榜榜首。玩家醒来时发现自己身陷一个神秘岛上,一丝不挂,而且饥肠辘辘。在游戏中人们必须打猎、采集物品、打造武器、调查技术和建造房子来抵抗炎热的白天、冰冷的夜晚、多变的天气系统、危险的野外和潜在的敌人。现正逢Steam打折,历史最低价仅需55元。
4、Watch_Dogs2(看门狗2)
《看门狗2》由Ubisoft制作,于2016年11月28日在Steam平台发行。玩家扮演的是年轻聪明的黑客马可仕.哈洛威(Marcus Holloway),来到技术革命的起源地:旧金山湾区。加入最恶名昭彰的黑客团体DedSec,执行史上最大规模的黑客行动,彻底消灭犯罪首脑用来大规模监视操控市民的侵入性运作系统ctOS 2.0。
5、Tom Clancy's Ghost Recon® Wildlands(幽灵行动:荒野)
《幽灵行动:荒野》是一款支持4人合作或单人游戏的第三人称军事射击游戏,火爆的战斗、巨大的地图、美丽的风景,上天入地无所不能。这款游戏貌似很少打折,即便Steam平台经常做促销活动,可打折的力度并不是很大。但游戏的可玩性不得不称赞,完全是3A大作应该拥有的。
欧洲最大云服务器发生火灾,服务器烧毁会带来哪些巨大的影响?
当地的一些重要数据损坏,无法找回,会造成一定的损失。当地的网络可能不通畅,影响人们上网,使用手机。可能会造成某些任务无法完成,给当地的经济,政治造成一定的冲击。
rust服务器为什么会被攻击
rust服务器会被攻击原因如下
1.造成服务器被攻击的原因不是单方面的,内部因素一般是服务器本身存在漏洞;外在因素是来自同行恶意竞争、黑客攻击勒索等。
2.暴露的服务器为了改善用户体验,很多企业使用 UDP(用户数据报协议)并将后端 Web 服务器置于联机状态,从而为攻击者留下了后门。对于暴露的服务器,黑客甚至无需编写恶意代码即可访问未经授权的数据。