最近博客和公众号文章差不多有二个多月没有更新了,相比之前每月一篇文章的更新频率,最近确实懒散了许多,一来年底收尾之际手上的工作繁重抽不出时间,二来自己最近的空闲时间的学习计划也排的紧密,久而久之就把写博客是事情落下了
从事嵌入式开发十几年,基本上围绕着这两种编程语言展开,都可以直接操作底层的编程语言,用的越熟练越是感觉工具属性越强。虽然两种编程语言分属于不同的编程思想,用的时间长了觉得差异也不是很大,现在就个人的从业经历,讲述下两种编程语言的差异和共同之处。
从事软件开发已经多年,中间换过几次工作,有些公司的编译环境的确不是总是最新的,就是环境有点差异而已,对于编程思想的影响非常有限,而且和平时编程工作差异也不是很大,对于企业来讲除非必须要切换环境否则不会没事折腾环境,企业首先要考虑效益问题,不会因为流行就跟风,现在很多企业还在用着VB,VC等老的脚本,已经用的非常熟练,后续也没有非常大的功能切换,所以这种性质得公司也不会随意切换新的编译环境。
从事嵌入式开发十几年,只要使用的编程语言有三种,C/C++ Java三种,其中C语言使用的时间最长,这门编程语言的最大特别是语法细节简介,但是灵活性非常强,从大的方面看要真正掌握一种编程语言,需要真正的项目实战,只是停留在理论层面上很难认清编程语言背后的本质,记得刚学习C语言阶段,基本上一个多月就把基础语法学习完了,并且做了大量的实习题目,觉得这门编程语言就这么回事了。
从事软件开发多年主要在浏览器内核,安卓框架,多媒体等领域研究的比较多,主要编程语言是C/C++ java等三种编程语言,对于易语言简单做了几个小功能,做了下尝试,从本质上讲差异不是很大,都是需要遵循一些语法细节,可能是用的时间短的缘故整体感觉还是怪怪的,主要是长期在英文编程环境下已经养成习惯,至于是不是中文倒是没有太大的感触。
元编程这个概念本身不新,只是没有发现原来很早就在用这个东西,所以python等下再聊,先理一理怎么理解编程这个事情。 我仔细思考,其实是在做一件设计想法,纪录想法,实现想法的过程。 怎么样设计想法?应该需要一些图形,文字通过一定格式纪录下来,反复修改,最好是有一个规范或者工具让其他人也能明白和理解,方便交流。这个问题在编程这里也就是进入到编程语言的选择上面来,也可以自己制定一个规范,不管你用lex+yacc语法制导还是设计LLVM的AST,反正结果是要一种编程语言来设计你的想法。 选定了设计想法的规范也就是编程语言,现在就是怎么样来纪录想法,显而易见不可能是流水账式的纪录,你得把想法重点理清楚,想法的关键字是什么,有些什么用途,有没有关联的事务,这里就是纪录想法的格式,对应到编程就是你用什么设计模式,你是用传统的类继承,还是鸭子类型的接口或者猴子补丁的方式来纪录想法。 有了纪录的想法图纸,对应到编程就是静态的代码字面量,就能真正的实现想法,根据想法图纸生成真实的对象。 这个过程和元编程有什么关系?如果你明白上面的过程,我就可以这样描述:lex+yacc可以创建编程语言,编程语言可以创建元编程,元编程可以创建类,类可以创建对象实例。 那到底什么是元编程呢,C++里面他的实现叫做模板和宏,python里面他可以用装饰器实现,也可以用type元类型实现,他是在编程语言和类之间的一层设计技术,yacc生成的对象是编程语言,编程语言生成的对象是元编程对象,元编程对象生成的对象是类,类生成的对象是实例。 C的宏和模板出现得很早很早,本质也很简单,就像是一份留白的合同,你填上名字就能用。 python对象有2个重要的容器,一个是继承元组,一个是属性字典,所有的属性包括方法都是放在属性字典里面,这个2个容器在init之前就已经生成好,如果你要在init之前做一些处理,比如捕获子类的属性名把字符串类型的属性名前面都加上str,把方法名首字符都大写,强制子类使用一些编程规约,还或者加载一些缓存的数据,实现方法重载等等。当然子类可以在init做自己的处理,如果你是一个框架的设计者,自动化一些背后的处理确实看起来很高级。所以元编程的本质就是一种增加乐趣的玩具,应为编码很枯燥的。
本文最初是为部门内部培训而准备的,但经过一番调研发现,同事们用不惯 RxJava,并不是因为网上介绍 “怎么用” 的教程不够多,恰恰是因为,一上来就急着发车的教程无数、却从未有过哪篇教程 舍得用几句话的功夫点破 RxJava 操作符究竟为何方神圣、我们为什么要用、为什么要那样用。
在真正搞明白这个事情之前首先要想明白一件事情,目前所有的编程语言都要遵守冯诺依曼的架构,也就是所有编程语言都要转化成二进制的文件机器语言,这样子计算机才能真正识别认识,全球存有的编程语言数量已经达到500多种,真正主流的编程语言差不多有十几种,而且在前几名的编程语言随着时代的发展也是一直在发生变化,因为科技在进步任何一种编程语言不可能永远处于一个高点。
由于经常写一些技术类的文章,经常遇到一些对于编程非常感兴趣但因为当初选择的原因没有入坑成为一个真正的程序员,心中还有个编程梦就买了很多书,在闲暇的时间学点编程满足自己内心那份遗憾,由于兴趣使然还学的不错,编程的本质是提升效率,减少重复的劳动,学一门编程语言对于一个普通人到底有多大好处?
众所周知的例子是 Scratch,这是一种麻省理工学院开发的可视化编程语言,用来教孩子们学编程。
算法和编程不是同等而言,学好编程包含层面很多,基础的编程语言,良好的逻辑思维能力(算法算是包含在这个层面),编程最核心的是编程思想。 相比而言算法是编程基础里面占比相对高点,但不是全部。现在大致分析下
代码的未来本质上与创新的未来紧密相连,而创新的未来发展方向将越来越趋向自动化和开源化。
编程语言虽然五花八门,千奇百怪,但是归根结底,编程语言最终的目标,本质上无非是回答两个问题:
虽然表面上易语言在展示形式上实现了中文编程,但内在实现上还差得很远,很多专业的程序员都觉得易语言就是做了外套。本质上还是传统编程语言内涵,全球编程语言有几百种,真正主流的编程语言也就几十种,真正的编程语言都会拥有自己的生态系统,有很多忠实的粉丝追随,而且还会有相应的中心组织在积极推进编程语言的进化,不停的更新,随着时间的推移使用者会变得越来越多,成熟的编程语言都有拥有自己的编程社区,形成一种可持续发展的道路。
作为一个标准的程序员对于算法需要有一个基础的掌握,而且算法几乎渗透到编程的各个方面,具备良好的算法基础对成为一名优秀的程序员有着非常大的好处,很多做了多年的程序员对于算法还没有一个很好的概念,觉得自己算法基础很一般还不是照样做的很不错,编程是一个种类极多,技巧非常多的,解决同样一个问题不同的人会给出不同的解决方案,而且效果差别也会非常大。随着人工智能的拓展算法又重新被很多企业重视起来,现在很多还没毕业的硕士只要是算法相关专业的很多企业都能给出非常高的薪水,证明市场对于算法的需求在提升。
昨天看到一个有意思的问题,为什么在我们遇到的大多数编程语言里面,数组的下标基本都是从0开始?
尼古拉斯·沃斯(Niklaus Wirth,1934年2月15日—),生於于瑞士温特图尔,是瑞士计算机科学家。Pascal语言之父。
在本文中,作者选择了 11 种最流行的编程语言(通过 Stack Overflow 标签出现的频率衡量),希望可以找出这些问题的共性及差异性。
TIOBE每年会将年度编程语言的桂冠颁发给当年最受欢迎的编程语言,而今年几乎无需竞争,谷歌的Go语言便以大比分轻松拿下了这项荣誉。2016年度Go语言获得了2.16%的用户增长,其后远远缀着它的竞争者——用户增长占比分别为0.95%和0.91%的Dart和Perl语言。Go语言的成功主要源于其易学和务实的本质,这种语言并非理论概念相关的,而是扎根于实践动手经验。除此之外,Go语言源生便支持并发编程。TIOBE公司有越来越多的客户纷纷采用Go语言。 那么,2016年中其它颇有前景的编程语言都怎么样了呢? Da
在科技驱动的世界,各行各业都在从根本上发展技术,业界领袖更是将其作为公司的重点。而这些技术的核心部分就是编程语言。国外一位技术爱好者 Ben 整理了一份最流行和最具影响力的编程语言清单,可以帮助开发者更好的预测 2018 年的编程语言发展趋势,同时,有针对性地选择和加强编程语言学习。 📷 这份清单的整理主要考虑了 TIOBE,Indeed.com 和 Github 上的数据指标: TIOBE 每月都会更新一次编程语言排行榜,整合世界各地的使用数据,发布最新的流行趋势。 Indeed.com 是世界最大的
我相信每一个想学习编程或者经历过编程实践的人,在刚开始的时候都会遇到一些沟沟坎坎,尤其是对编程里面的一些概念,比如说Java语言是面向对象的、C语言是面向过程的编程语言,Java和C都是编译型语言,JavaScript和Python都是解释性语言……我相信很多新手对这些对象、编译、解释等等这些概念都一知半解,如果你会有这样的疑问,那么不妨读下去,或许会有不一样的收获。 或许你会不自觉的发现接触到一门编程语言之后听过最多的就是“对象”,因为随着编程语言的发展,几乎市面上所有主流的编程语言都宣称自己的面向对
最近几十年中国软件取得了长足的进步,特别是现在大家中国互联网迅猛的发展,中国的综合国力也在稳步的上升,很多人觉得现在很多产业都打上中国的烙印,是不是也该有一种属于自己的编程语言,于是在这种场景下有了易语言的,坦白讲易语言的生态链还没有真正的成形,一种编程语言的成型需要一个完整的成长期。短时间内指望这门语言有多大的影响力也不现实。
数据结构是程序员的必备基本功,数据结构应该是算法的基础,算法一般初学的时候很难理解,掌握算法需要完成两个步骤,真正了解算法的本质就是从概念上理解,从理论上不掌握很难进行实践,虽然编程行业讲究的是实践,在没有准确的理论基础上进行实践类似于无头苍蝇,想要真正的掌握一种算法,需要经过经过几种步骤,第一掌握理论,第二用代码实现,第三回归到算法本身进行变通,如此反复进行。
从业已经十几年,开始学习编程就是从C语言开始,有幸的是第一份嵌入式的工作主要开发语言就是这门编程语言,从学校的大门口出来才发现学校学的东西真的只是皮毛,更多东西还是在学术上或者理论上,真正的功夫还是在项目实战中获得,其实在学校学习C语言的过程中没有觉得有多么难,掌握常见的语法以及简单的编程技巧就能看懂所有代码了,在学校有段时间学了大约2个月的C语言觉得这门编程语言的语法也就是这些了,应该所有的代码都能看得明白了,于是去学校图书馆借了一本800多页的linux内核源码解析,结果看了不到100页脑子里面完全是浆糊了,才知道C语言的博大精深,现在学的东西基本上连皮毛都算不上。
我们会用 Javascript、Typescript 来写前端应用,用 Java、Go 等来写后端应用,也会用 Python 来写一些工具脚本。
有不少刚刚上大学的计算机专业学生问我,应当怎样去规划自己的编程学习,哪些东西比较重要。我虽不是什么大牛,但好歹也学了这么多年计算机,接触过几门技术,待过几家相关行业的公司。在这里,我分享一下自己的看法。我说的未必就是正确的,你也不必完全照做,只不过多一点经验之谈,供以后想成为程序员,或者打算从事相关工作的朋友参考。其他朋友没事也可以听听,了解下,说不定其中有你感兴趣的地方。 首先,大家最关心的问题就是:我该学什么语言?这个问题一向没有标准答案。各种技术社区里吵了很多年,并将继续争论下去。对此,我的建议是:学
1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 计算机程序: 就是计算机所执行的一系列的指令集合,而程序全部都是用我们所掌握的语言来编写的,所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 1.2 计算机语言 计算机语言指用于人与计算机之间通讯的语言,它是人与计算机之间传递信息的媒介。 计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言和高级语言三大类。 实际上计算机最终所
Python 是对于第一次编程的人来说是最为流行的编程语言之一,而且这不是巧合。Python 是一门通用的编程语言。这意味着它能应用在广泛的编程任务上。几乎没有你不能用 Python 完成的工作。这一点使得很多新手能在实际中应用这门编程语言。另外, Python 有两个重要的设计特征,使得其对于新手更友好:清晰、类似于英语的语法,和强调代码的可读性。
今天,我们就结合 操作系统线程和编程语言线程 再次深入探讨线程的生命周期问题,线程的生命周期其实没有我们想象的那么简单!!
风口之上,国内的低代码、无代码方案数不胜数。如下图所示,对于网易数帆推出的轻舟低代码平台,NASL是其中的关键,也是最大的差异化。NASL全称是NetEase(Normal)Application Specific Language,是轻舟低代码平台提供给用户的应用建模语言。对于NASL,网易数帆内部有过争论,有人强调NASL是一种DSL,有人则强调是一门编程语言,深入探讨后团队发现这两种说法都有道理,认知差异主要来自于看待问题的不同视角。
关键时刻,第一时间送达! 【CSDN编者按】在之前的 TIOBE 年度榜单中, 宝刀未老的 C 语言成功逆袭 ,成为 2017 年度编程语言。在本文中,我们综合了最具权威的TIOBE 榜单、全球最大的求职引擎 Indeed.com、以及代码最活跃的社区之一GitHub,对于过去一年中哪种编程语言最受欢迎?编程语言中有哪些一直屹立不倒?2018 年的语言趋势是怎样的?JavaScript 又为何会会遭到弃用?这些问题本文中我们会一一进行解答。 📷 以下为译文: 世界因科技而驱动,各行各业因技术而得到了根本性的
**计算机发展史,是介绍计算机发展的历史。计算机发展历史可分为1854年-1890年、1890年-20世纪早期、20世纪中期、20世纪晚期-现在,四个阶段。
开发安卓距离fpga还是有点距离,这个问题还是显得有点让人捉摸不透,安卓开发本身也分为几种情况,安卓底层开发,安卓框架层开发,安卓应用级别的开发,安卓底层开发主要驱动层面和linux关联这块,主要开发语言是C语言,框架层面的开发主要是java和c++,安卓应用开发主要是java。一个fpga开发人员也是分为很多种,硬件工程师,算法工程师,PCB工程师,通常意义上的FPGA工程师主要编写Verilog的代码和调试工作。
Java是从C衍生出来的,Java语言的对象模型几乎是C对象模型的简化版。但是C和Java还是有一些明显的区别的。
众所周知,很多语言技术已经在长久的历史发展中掩埋,这期间不同的程序员也走出的自己的发展道路。
已经从事软件开发十几年,C++和java跟着做过好多项目,相对来讲跟C++的感情更加深刻些,毕竟被折腾的时间最长印象也最深刻,刚入行一年就跟着做C++项目,开始被泛型编程里面的各种规则折腾的够呛,发现和自己在学校学的完全不是一码事,学校学到的C++理论只是皮毛而已,也就是学学面向对象大概是什么样子,面向对象的三大特性要真正的了解还是需要在项目中才会领悟,然后被技术经理批的无地自容,都开始怀疑自己是不是真的适合做研发,为了能够跟上项目几乎天天搞到半夜,就这还是赶不上大部队,好在没有放弃坚持下来了。
为了讲清楚这个问题,我们需要先看一看「什么是面向对象编程」和「什么是面向对象语言」。
编程:就是计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
现在的java在编程界基础已经根深蒂固了,随之带来的影响就是有大量的岗位,大量的工作方向,虽然现在很多的新兴语言势头都非常的猛烈,但是这并不影响java依然体量最大的编程语言,而且丝毫也看不出这门语言
引言:本文节选自朱赟博士在极客时间App开设的“朱赟的技术管理课”,已获授权。更多精彩文章,可以点击文末“阅读原文”免费试读。
程序是一组计算机能识别和执行的指令,为使计算机按预定要求工作,首先要编制程序,无论是最早的操作系统还是现代操作系统,程序的运行都是计算机工作的本质。早期计算机是单任务执行,由程序员直接编写操作系统可以识别的机器语言,到现在可以实现多道程序并行,并且程序的开发由更利于程序员理解的高级语言编写,源程序在经过一系列翻译过程,变成计算机理解的机器语言,再执行。整个程序执行的过程,需要CPU、内存、程序代码、设备等配合,才能实现程序要表达的功能。
1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 计算机程序: 就是计算机所执行的一系列的指令集合,而程序全部都是用我们所掌握的语言来编写的,所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 注意:上面所定义的计算机指的是任何能够执行代码的设备,可能是智能手机、ATM机、黑莓PI、服务器等等。 1.2 计算机语言 计算机语言指用于人与计算机之间通讯的语言,它是人与计算机之间传递信息的媒介。
软件架构师必须站在一个很高的高度去审视自己软件的架构,去理解自己的工作在更宏大的背景中的位置和作用,才能构建出一个经得起时间考验的软件系统。这个高度既能包括技术的高度和深度,也包括对软件编程这件事情的认知的程度,比如软件编程的历史和未来的理解,以及对自己工作的使命感的理解。
你肯定有过夏夜仰望星空的时候,但不知道你是否思考过这样一个问题:如何才能知道宇宙万物星罗棋布的规律?科学家们殚精竭虑地研究,就是为了探寻这个秘密。如果科学家们能和宇宙的设计者对话,就可以通过设计者的亲口描述了解其对宇宙万物的规划,这样就可以对研究宇宙万物起到提纲挈领的作用,科学家们的工作会更有成效。但是,没有这种“如果”。
在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的。 一 平台与编程语言选择 首先,游戏开发的平台就有很多类型: 个人主机平台:Windows、Linux、Mac OC; 移动平台:iOS、Android、Windows Phone、BlackBerryOS、Symbian; 专业主机平台:Xbox、PlayStation、Will等。 如果你想从事移动平台的游戏开发,An
作为编程语言,所支持的数据类型是进行后续处理工作的基石。像整数、浮点数、逻辑值、字符与字符串这几种基础的数据类型各种编程语言里都是必备,当然在处理上有一些差别,例如C/C++等编程语言中就要求用户必须先声明数据类型,而像python等编程语言中则对声明数据类型没有那么严格的要求,可以声明也可以不声明,编译器会根据赋值自动判断。除了基础的数据类型,不同编程语言往往还会有一些自己特有的数据类型,虽是特有的,但在其他编程中也可以找到替代类型。比如Python中的Dictionary数据类型,在matlab中就没有这样的数据类型,那有没有可以替代方法呢,当然是有的,咱们可用matlab的cell或struct来替代。
作为一个已经写了十几年代码的程序员,做好软件不是全部围绕代码而展开,换句话讲一个程序员的程序员优秀不仅仅体现在代码上,更要有内在的编程思想说的层次再高深点就是框架思想。很多初学者都会存在很多疑问,觉得能够写代码就万事大吉了,在能写代码之前会有很多疑问
领取专属 10元无门槛券
手把手带您无忧上云