• 关于

    C 语言可以做什么

    的搜索结果

问题

菜鸟求教:这些网站是什么语言程序做的?

菜鸟求教: 想问一下大疆创新dji.com 是用的什么语言程序 应该都是自己开发的网站程序吧    想他们这些网站的程序开发难度大吗   还是我可以下载个网站源程序就可以做一个和他们一样的网站。     他们的网站高大尚&...
gonstar 2019-12-01 21:57:07 5659 浏览量 回答数 3

回答

羡慕精通css的!js(其实所有编程语言都一样)这东西在掌握它的基本语法之后,就是多写,最好是自己做个项目,或者是跟着别人做一个项目,这样才能发现问题,遇到盲点,只有发现更多问题,你才会去往更深的领域探索,进而去了解这门语言的优点和弊端,那么这门语言就会自然而然的掌握了。###### 引用来自“倪闯”的答案 羡慕精通css的!js(其实所有编程语言都一样)这东西在掌握它的基本语法之后,就是多写,最好是自己做个项目,或者是跟着别人做一个项目,这样才能发现问题,遇到盲点,只有发现更多问题,你才会去往更深的领域探索,进而去了解这门语言的优点和弊端,那么这门语言就会自然而然的掌握了。 因为没有一点的编程经验,您所说的自己的项目 是啥项目 是什么东东啊 啊啊 啊  ###### 引用来自“在希望的田野上”的答案 引用来自“倪闯”的答案 羡慕精通css的!js(其实所有编程语言都一样)这东西在掌握它的基本语法之后,就是多写,最好是自己做个项目,或者是跟着别人做一个项目,这样才能发现问题,遇到盲点,只有发现更多问题,你才会去往更深的领域探索,进而去了解这门语言的优点和弊端,那么这门语言就会自然而然的掌握了。 因为没有一点的编程经验,您所说的自己的项目 是啥项目 是什么东东啊 啊啊 啊  你可以自己做一个小软件,或是有什么想法,都可以用程序实现
kun坤 2020-06-09 11:14:02 0 浏览量 回答数 0

问题

【百问百答】Java开发手册灵魂15问之三目运算符的空指针问题到底是个怎么回事

1. 简述Java语言中,三目运算符如何计算 2. 在Java语言中,条件运算符是左结合还是右结合 3. 在Java语言中,基础类型包括哪些 4. 在Java语言中,基础类型对应...
huc_逆天 2021-01-15 10:48:19 7 浏览量 回答数 0

回答

首先你要明确你的定位,不能什么都会一点,也没必要什么都学。请记住一点:什么都会,到了大公司,可能就变成了什么都不会了。如果你想搞前端,html+css?并不能说明什么,其实这是最基本的,也是不需要刻意去学习的,真正的前端工程师是js+css+后端,而且js是非常熟悉才行,需要了解各种流行的框架react、angular、jquery、kissy、nodejs,熟悉他们的源码和实现原理,这只是前端最基本的技能。。对于后端的话,水就比较深了,java、php、cc++等每种语言都有自己的优缺点和适用场景,没有一家独大的,既然创造了这种语言,就有它存在的价值。java是阿里巴巴比较常用的后端语言,包括很多框架都是基于java的。php百度用的比较多、腾讯也在用,而且php适合小型企业使用快速开发。c/c++贴近操作系统,适合用来做基础设施,比较同意出一些高大上的东西,每个大公司应该都有在用的。其实,语言只是一种工具,真正有用的是你可以用这种工具来干什么。比如你可以设计一种大数据处理的框架,然后用某种语言来实现;你还可以想出一种很牛逼的算法,然后用某种语言实现;当然你也可以设计一个很fansy的消息中间件或RPC框架等等。如果你只是会某种语言,对不起,你只能做一个码农。
名字不能长 2019-12-01 23:32:22 0 浏览量 回答数 0

问题

C语言数据 【问答合集】

C语言数据结构中图的顶点向量是什么东西?https://yq.aliyun.com/ask/123653 c语言数据结构 最短路径问题代码?https://yq.aliyun.com/ask/123610 在c语言数据结构中,图片中的 ...
马铭芳 2019-12-01 20:09:44 943 浏览量 回答数 1

回答

必须是C语言 C++的也勉强。 其它的就不行了 比如java是不被接受的 1、既然会C++了,基本等于掌握了C。 C++已经包含了C的。可以说C++只是在C的基础上增加了对象的概念! 如果果求不用C++,只要使用C++面向对象的编程思想就可以了(也就是C了,什么cin,cout都换成C常用的输入输出就可以了)。 2、计算机专业有:计算机系统结构,计算机软件与理论,计算机应用技术,计算机科学与技术,(专业学位)计算机技术,模式识别与智能系统。 方向是由导师决定的,导师研究什么就学什么。像什么数据挖掘,信息安全,图形图像处理,经济信息处理与仿真,数据库技术及其应用,计算机网络,多媒体信息处理,企业信息化,软件工程,计算智能,信息检索与自然语言处理等很多,在报名的时候可以看到。 还有就是计算机专业研究生毕业,别人不会问是计算机什么方向的,只会在乎做了什么项目,有什么样的经验。在毕业证上也只有专业名称(如计算机应用技术)没有什么方向。
liujae 2019-12-02 01:22:24 0 浏览量 回答数 0

回答

Kotlin的简介 Kotlin是由JetBrains公司(IDEA开发者)所开发的编程语言,其名称来自于开发团队附近的科特林岛。 多平台开发 JVM :Android; Server-Side Javascript:前端 Native(beta) :开发原生应用 windows、macos、linux Swift与Kotlin非常像 http://nilhcem.com/swift-is-like-kotlin/ kotlin发展历程 image.png java发展历程 image.png JVM语言的原理 image.png JVM规范与java规范是相互独立的 只要生成的编译文件匹配JVM字节码规范,任何语言都可以由JVM编译运行. Kotlin也是一种JVM语言,完全兼容java,可以与java相互调用;Kotlin语言的设计受到Java、C#、JavaScript、Scala、Groovy等语言的启发 kotlin的特性 下面不会罗列kotlin中具体的语法,会介绍我认为比较重要的特性,以及特性背后的东西。 类型推断 空类型设计 函数式编程 类型推断 image.png 类型推断是指编程语言中在编译期自动推导出值的数据类型。推断类型的能力让很多编程任务变得容易,让程序员可以忽略类型标注的同时仍然允许类型检查。 在开发环境中,我们往往写出表达式,然后可以用快捷键来生成变量声明,往往都是很准的,这说明了编译器其实是可以很准确的推断出来类型的。编程语言所具备的类型推断能力可以把类型声明的任务由开发者转到了编译器. java中声明变量的方式是类型写在最前面,后面跟着变量名,这就迫使开发者在声明变量时就要先思考变量的类型要定义成什么,而在一些情况下比如使用集合、泛型类型的变量,定义类型就会变得比较繁琐。 Kotlin中声明变量,类型可以省略,或者放到变量名后面,这可以降低类型的权重,从必选变为可选,降低开发者思维负担。java10中也引入了类型推断。 Javascript中声明变量也是用关键字var,但是还是有本质区别的,Kotlin中的类型推断并不是变成动态类型、弱类型,类型仍然是在编译期就已经决定了的,Kotlin仍然是静态类型、强类型的编程语言。javascript由于是弱类型语言,同一个变量可以不经过强制类型转换就被赋不同数据类型的值, 编程语言的一个趋势就是抽象程度越来越高,编译器做更多的事情。 空类型设计 空类型的由来 image.png 托尼·霍尔(Tony Hoare),图灵奖得主 托尼·霍尔是ALGOL语言的设计者,该语言在编程语言发展历史上非常重要,对其他编程语言产生重大影响,大多数近代编程语言(包括C语言)皆使用类似ALGOL的语法。他在一次大会上讨论了null应用的设计: “我把 null 引用称为自己的十亿美元错误。它的发明是在1965 年,那时我用一个面向对象语言( ALGOL W )设计了第一个全面的引用类型系统。我加入了null引用设计,仅仅是因为实现起来非常容易。它导致了数不清的错误、漏洞和系统崩溃,可能在之后 40 年中造成了十亿美元的损失。” null引用存在的问题 以java为例,看null引用的设计到底存在哪些问题 空指针问题NPE 编译时不能对空指针做出检查,运行时访问null对象就会出现错误,这个就是工程中常见的空指针异常。 null本身没有语义,会存在歧义 值未被初始化 值不存在 也许表示一种状态 逻辑上有漏洞 Java中,null可以赋值给任何引用,比如赋值给String类型变量,String a = null,但是null并不是String类型: a instanceof String 返回的是false,这个其实是有些矛盾的。所以当持有一个String类型的变量,就存在两种情况,null或者真正的String. 解决NPE的方式 防御式代码 在访问对象前判空,但会有冗余代码;会规避问题,而隐藏真正的问题 抛出异常给调用方处理 方法中传参传入的空值、无效值,抛出受检查异常给上层调用方 增加注解 Android中可以增加@NonNull注解,编译时做额外检查 空状态对象设计模式 空状态对象是一个实现接口但是不做任何业务逻辑的对象,可以取代判空检查;这样的空状态对象也可以在数据不可用的时候提供默认的行为 java8 Optional类 java8中引入了Optional类,来解决广泛存在的null引用问题.官方javadoc文档介绍 A container object which may or may not contain a non-null value. If a value is present, isPresent() will return true and get() will return the value. Additional methods that depend on the presence or absence of a contained value are provided, such as orElse() (return a default value if value not present) and ifPresent() (execute a block of code if the value is present). 来看一下是如何实现的。 举一个访问对象读取熟悉的例子 java 8 之前 : image.png java 8: image.png 总结: 1.用Optional还是会比较繁琐,这个也说明了设计一个替代null的方案还是比较难的。 optional的耗时大约是普通判空的数十倍,主要是涉及泛型、使用时多创键了一个对象的创建;数据比较大时,会造成性能损失。 java8 引入Optional的意义在于提示调用者,用特殊类型包装的变量可能为空,在使用取出时需要判断 Kotlin的空类型设计 Kotlin中引入了可空类型和不可空类型的区分,可以区分一个引用可以容纳null,还是不能容纳null。 String vs String? String 类型表示变量不能为空,String?则表示变量可以为空 String?含义是String or null.这两种是不同的类型. 比如: var a:String = “abc” //ok var a:String = null //不允许 var b :String? = null //ok a=b // 不允许 String?类型的值不能给String类型的值赋值 这样就将类型分成了可空类型和不可能类型,每一个类型都有这样的处理;Kotlin中访问非空类型变量永远不会出现空指针异常。 同样上面的例子,采用Kotlin去写,就会简洁很多 image.png 编程范式-函数式编程 编程范式是什么? 编程范式是程序员看待程序和写程序的观点 主要的类型 非结构化编程 结构化编程 面向对象编程 命令式编程 函数式编程 这些类型并不是彼此互斥的,而是按照不同的维度做的划分,一种编程语言可能都支持多个编程范式 非结构化编程 第一代的高级语言往往是非结构化编程 比如 BASIC语言 每一行的代码前面都有一个数字作为行号,通常使用GOTO的跳跃指令来实现判断和循环. 看一下下面这段代码是做什么的: image.png 实际上做的是:程序在屏幕上显示数字 1 到 10 及其对应的平方 采用这种方式写程序,大量的使用goto实现逻辑的跳转,代码一长,可读性和维护性就比较差了,形成“面条式代码” 结构化编程 采用顺序、分支、循环结构来表达,禁用或者少用GOTO; 并用子程序来组织代码,采用自顶向下的方式来写程序 代表语言是C语言 实现同样的逻辑: image.png 可见采用结构化编程,代码的逻辑会更清晰。 面向对象编程 思想: 将计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。 特性: 封装性、继承性、多态性。 命令式编程 把计算机程序视为一系列的命令集合 主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。 “先做这,再做那”,强调“怎么做” 实现: 用变量来储存数据,用语句来执行指令,改变变量状态。 基本所有的常见的编程语言都具有此范式 函数式编程 声明式语法,描述要什么,而不是怎么做 类似于SQL语句 语言: kotlin swift python javascript scala 函数是第一等公民 可以赋值给变量,可作为参数传入另一个函数,也可作为函数的返回值 纯函数 y=f(x) 只要输入相同,返回值不变 没有副作用:不修改函数的外部状态 举个栗子 公司部门要进行outing,去哪里是个问题,要考虑多个因素,比如花费、距离、天数等等,有多个备选地点进行选择。 定义一个数据类: image.png 要进行筛选了,分别用sql,kotlin,java来实现 找出花费低于2000元的outing地点信息 SQL image.png Kotlin image.png java 7 image.png 可见kotin的写法还是比较接近于sql的思想的,声明式的写法,而不管具体如何实现;其中的:place->place.money<2000 就是函数,可以作为参数传递给fliter这个高阶函数;而且这个函数没有副作用,不改变外部状态。 再来一个复杂一点的: 找出花费低于5000元,时间不多于4天,按照距离排序的outing地点名称 SQL image.png Kotlin: image.png java 7 image.png 由此可见用kotlin的函数式写法,会更简洁,逻辑也更清晰,这段代码的目标一目了然,这种清晰在于实现了业务逻辑与控制逻辑的分离,业务逻辑就是由函数实现的,比如place->place.money<500,而控制逻辑是由filter,sorterBy等高阶函数实现的。 而java的传统写法是基于对数据的操作,避免不了遍历的操作,业务逻辑与控制逻辑交织在了一起,这段代码的目的就不是那么容易清晰看到的了。 总结 kotlin是实用的现代编程语言,吸收了众多编程语言的优点,支持类型推断、空类型安全、函数式编程、DSL等特性,非常值得学习和使用。
问问小秘 2020-04-30 16:33:40 0 浏览量 回答数 0

问题

你真的需要掌握多种语言吗?

你需要掌握多种语言吗? 我刚刚断送了我的事业。嗯,别人就是这么对我说的。 我的同事们知道了我要离开公司,大多数对此表示理解。让他们不解的是,我目前就职的公司是一家 Window...
oneapm_official 2019-12-01 21:00:49 7863 浏览量 回答数 0

问题

C语言

想问下C语言现在可以做什么研发,萌新...
杨子琛 2019-12-01 20:28:14 404 浏览量 回答数 5

回答

Go 语言写前端 Web 应用借助的是 WebAssembly 。 那什么是 WebAssembly 呢?它也叫 wasm ,是由 Google、Microsoft、Mozilla、Apple 等几家大公司合作发起的 WebAssembly 是一种新的字节码格式,主流浏览器都已经支持 WebAssembly。和 JS 需要解释执行不同,WebAssembly 字节码和底层机器码很相似可快速装载运行,因此性能相对于 JS 解释执行大大提升。也就是说 WebAssembly 并不是一门编程语言,而是一份字节码标准,需要用高级编程语言编译出字节码放到 WebAssembly 虚拟机中才能运行 。所以,理论上讲只要能编译成 WebAssembly 字节码的高级语言都可以写 Web 应用程序。 而 Go 的前端框架叫:Vugo 。它是一个 Go 语言开发库,可以很容易地使用 Go 语言编写 Web 用户界面。 Vugu: 是一个用于 Go+WebAssembly 的现代 UI 库,受 Vue 和 React 等工具的启发,Vugu 是一个完全用 Go 编写的小型库,可以在现代浏览器中使用 WebAssembly 运行。 官网示例,go 写前端大概是这样的: 创建一个在浏览器中运行的基本工作 Vugu 应用程序,只需要三个小文件即可启动。一个是创建 go.mod 文件,用来指定 Go 模块名称,再创建一个 Vugu 组件文件 ,类似于 Vue 的 .vue 文件一样。最后,创建一个开发服务器代码文件,是一个为你的程序提供服务的服务器。 然后运行一下服务器文件,就可以了,Web 应用程序就跑起来了。 对于这次 Go 语言的强势入侵,作为程序员的你怎么看?但是历史的经验告诉我们,往往什么都想干的,往往都做不好。不知道这次 Go 能否在前端占据一席之地呢?欢迎大家留言,讨论,交流。 我本来打算学 Go 做后台呢,但是还没起步,Go 又打开了前端的大门。当程序员真的是累啊!
有只黑白猫 2020-01-07 17:26:58 0 浏览量 回答数 0

问题

如何给项目选择最合适的编程语言?

如何给项目选择最合适的编程语言? 每次开始一个新项目,无论是一个独立的程序还是现有计划的一个组件,都会面临着一个应该选择什么样的编程语言的问题。只考虑之前用过的编程语言或者现在最流行的语言的话...
chaipanpan 2019-12-01 21:04:01 9813 浏览量 回答数 0

回答

net是目前靠前三大主流开发语言之一net与Java相比.net更适合做桌zhidao面应用系统当然也可以做Web应用,对于java来说、java更适合做Android和javase javaee web应用程序。版net只是根据市场需求而进入主流的语言并没有什么语言与语言之间对抗的权意思net应用市场大多数在超市收银、餐厅点餐等一些桌面应用程序等。
游客bnlxddh3fwntw 2020-04-23 21:06:28 0 浏览量 回答数 0

回答

他们是 CSS 预处理器。他是 CSS 上的一种抽象层。他们是一种特殊的语法/语言编译成 CSS。 例如 Less 是一种动态样式语言. 将 CSS 赋予了动态语言的特性,如变量,继承,运算, 函数. LESS 既可以在客户端上运行 (支持 IE 6+, Webkit, Firefox),也可一在服务端运行 (借助 Node.js)。 为什么要使用它们? 结构清晰,便于扩展。 可以方便地屏蔽浏览器私有语法差异。这个不用多说,封装对浏览器语法差异的重复处理,减少无意义的机械劳动。 可以轻松实现多重继承。 完全兼容 CSS 代码,可以方便地应用到老项目中。LESS 只是在 CSS 语法上做了扩展,所以老的 CSS 代码也可以与 LESS 代码一同编译。
茶什i 2019-12-02 03:16:42 0 浏览量 回答数 0

回答

同问。。。。######初学者用C语言很难开发出来可视化的东西,我觉得你不妨买块单片机的开发板,51的就行,最容易上手,这样既可以熟悉语言,也能熟悉硬件。只要将开发板的例程完全消化。那么你就可以用C来开发产品了,至于书,我无法给出建议,因为我自己从来没有买过C的书。 当你能够用C做出一些东西以后,你可以先接触数据结构,严蔚敏数据结构就行,下一步就可以学些算法了,算法导论是本不错的书。 至于微机原理,操作系统,你可以在这个过程中一起学习,这时候应该能算初级软件工程师了。 个人建议,希望能对你有帮助。######谢谢您!######如果看语言本身,教科书上就一堆语法和小DEMO,你想深入体验,要结合具体的功能去做实现,才能体会语言的强大~ 比方说:用C做一个通信程序(SOCKET) 看看一些用C开发的开源软件,理解其中数据结构的定义以及操作。 要结合具体的功能才能体会语言的强大,要不然就觉得,就这些东西,能干什么呢?######谢谢!######我觉得写个小游戏(网上有很多例程)可以体会深一些...我当初是这么做的感觉还不错######其实也简单啦,想要成就感?用C写个素数算法。先保证0到100的正确。然后跑跑0到100万的。当然要注意位宽等问题。同样的问题,你让懂JAVA的人也做个程序。看谁的快。哈哈。 ######先试着写应用层的小程序啊,可以是网络的,也可以是一些算法啥的。先深入的话,可以下Linux的内核看######把K&R的书啃个4-5遍,并且把上面的例子敲几遍(注意思考,这个是最重要)的,然后.. 没然后了...######向@ 中山野鬼 学习一定没错的,他是搞C的专家######自学?转java
kun坤 2020-05-29 22:57:52 0 浏览量 回答数 0

问题

[精品问答]Java一百问第一期

java之父高斯林,Java的缔造者。 而Java发展至今,使用者已占领市场七成。 动心者仍在观望,使用者“爱恨交加” 以下是为每一个java使用者整理的灵魂百问,大部分都是踩坑经验...
问问小秘 2019-12-01 21:51:20 791 浏览量 回答数 1

问题

【百问百答】Java开发手册灵魂15问之为什么不建议在for循环中使用“+”进行字符串拼接

1. 什么是String,它是什么数据类型? 2. 创建String对象的不同方式有哪些? 3. 写一个方法来判断一个String是否是回文? 4. 如何让一个字符串变成小写或大...
huc_逆天 2021-01-15 10:47:35 7 浏览量 回答数 0

回答

主要是为了代码在jvm层面上获得兼容性。实现泛型,我们可以在java语言层面做(类型擦除),或者在java虚拟机层面做(实际上C#的泛型就是在.NET虚拟机上做的),java并不是jvm上唯一的编程语言,并不是所有的语言都支持泛型,如果在jvm上做,那么就意味着早期的jvm字节程序,或者用不兼容泛型语法的语言写的程序就和这个版本的jvm不兼容了。这也是为什么.net framework 2/3 完全不兼容 .net 1.x 的原因。
蛮大人123 2019-12-02 02:47:07 0 浏览量 回答数 0

回答

C语言入门的数多了,但要系统好好学,买本C Premier。 数据结构:严蔚敏,清华大学出版社的,有C语言版,这是泰斗了。 算法就多了,想好好学,就买本MIT出的算法导论,想搞竞赛或者钻研算法就买传说中的黑书《算法艺术与信息学竞赛》,有兴趣时间多,可以通读高德纳(KMP算法中那个K)的《计算机程序设计艺术》,好几卷。 另外,你得明白,语言是语言,要精通语言,顶多学学数据结构,学算法跟学好语言没多大关系。你得先搞清楚定位。如果你是去做码农,可能一辈子都不会用到什么高级算法。
琴瑟 2019-12-02 01:22:47 0 浏览量 回答数 0

回答

c学完。。。。。。你要知道很多大牛都不敢说自己c学完了。 我的观点和楼上一样你要明确自己想搞什么样的软件。 还有不要去追求语言本身,我可以理解为你现在基础打完了。你可以去下载别人的源码。去学习。 要多写,只有多写多做才能说往“学完”的方向走。 算法导论这本书写的不是一个技术,是一种思想。什么时候都可以去看。哪怕你不会任何程序语言,但是关键是你想学的话一定要经常做经常写程序,才能理会算法导论的思想。-------------------------c#.net 没办法,否则你永远进入不到windows的世界-------------------------我觉得你首先需要明确的是你将来想编程做哪一方面的软件。
云篆 2019-12-02 01:21:07 0 浏览量 回答数 0

回答

一、前言 Java语言长期以来一直霸占多数热门编程语言榜单的榜首,可见这是一个备受程序员热捧的编程语言。Java语言具有什么魅力?想必这都是已经为大多数人们所熟知的了,不值得过多赘述。而Java语言发展至今,面对发展势头迅猛又十分简单易学的python,以及各种层出不穷的高级语言,Java程序员的份额已经逐步下降,那它是否还能在未来保持领先的优势呢?本文就主要从Java语言所不擅长的领域,以及它在自己的领土内受到的对手入手,聊一聊Java语言在未来所面临的挑战。 二、Java帝国的今天 2.1 依然霸占TIOBE热门编程语言的榜首 这是来自权威开发语言排行榜TIOBE的最新数据(截止到2020年4月),可以看到Java语言依然在语言排行榜霸占第一的位置!虽然下面Python小老弟近几年搭上大数据的热潮,发展实为迅猛,在其他一些排行榜上面甚至超越大哥,但是在TIOBE这样权威的排行榜上面,Python依旧是小老弟! 2.2 曾经想扼杀Java的微软宣布加入OpenJDK 这又是一个IT界的真香现场,Sun 公司曾以“歧视使用 Java 软件”为由起诉微软。而微软在2001年推出新版操作系统 Windows XP 时,故意不安装 Java 软件,并且推出高仿 Java 的语言 C# 和 .net 框架。在现在,微软却宣布加入OpenJDK,拥抱Java技术。微软的宇宙第一 IDE Visual Studio也开始支持Java开发(通过VS的 Visual Studio Live Share ,可以关联到VS code上面的Java项目,协同编程,间接地支持了Java开发)。 2.3 Oracle发布开源全栈虚拟机GraalVM 这是大名鼎鼎的Oracle公司搞出来的开源产品,从官网“Run Programs Faster Anywhere”这句口号和产品的命名GraalVM就可以看出,GraalVM是升级版的JVM。在GraalVM上面执行Java程序的效率更高(得益于其中的JIT编译器技术)。最牛逼的地方在于,GraalVM支持多语言应用!在GraalVM里面,多种不同的语言可以互相传递数据,支持Java、Python、Ruby、R、Scala、Kotlin,JavaScript等多种语言。 三、Java帝国受到的挑战 3.1 后端服务器开发 J2EE作为Java平台的重要组成部分,现在广泛应用于Web后台服务器开发领域,在这个领域,Java拥有很多好朋友,比如Spring框架,Mybatis和Hibernate等,使得开发者可以快速构建Web应用程序。这是Java帝国一块重要的领土,但也有很多挑战。下面就是几个强大的竞争者。 3.1.1 Python 的竞争 Python语言和Java相比,具有下面这些优点: 语法简单直观,这意味着开发速度快第三方库强大,可以写复杂的逻辑 当然Python和Java相比执行效率上肯定是更低了,因此主要应用于小型的网站后台,像阿里这样的大厂就是拥抱Java后台的了。 3.1.2 C++ 的竞争 C++语言和Java相比,具有以下优点: 执行效率高对内存管理自由,而Java由GC来管理 C++适合大型高性能的服务器开发。腾讯更多的就是使用C++进行开发,这点和阿里不同。当然C++相比Java,学习和开发的难度更高。 3.1.3 node.js 的竞争 node.js的出现大概是前端程序员最高兴的事情了,因为node.js可以让他们写的JavaScript代码运行在服务端,这样就可以使得前端不用学Java也能自己写后台,摆脱后台爸爸的束缚(误)。得益于node.js的事件驱动机制,node.js具有很高的并发性能,可以应对大规模的http请求。但也有缺点,因为js只支持单核,因此没法充分利用服务器的性能,它不适合CPU密集型应用。 3.1.4 Go 的竞争 Go语言是最近很火的开发语言,适合用于开发高性能分布式系统。这是一个十分强大的竞争对手,被认为是未来的服务端语言。它具有下面这些优点: 学习难度低,容易上手,易于维护得益于协程,并发性能优越编译型语言,执行效率高 3.1.5 小结 可以看到,在后端服务器开发领域,Java在不同方面受到多种语言的竞争,轻量小型的服务器,人们可以选择Python,node.js或者PHP。而大型高性能服务器,人们可以选择C++。Go语言就更强大,兼具了比Java更简单的语法和更高的并发性能,背后又是Google爸爸。因此,在这一领域,Java面临巨大的竞争压力。 3.2 安卓系统应用开发 Java用于安卓应用程序开发已经是很成熟的方案了,目前绝大多数的安卓应用都是用Java写的。很多安卓程序员也都是学Java过来的。但是随着新语言不断推出,和安卓应用开发方式的演变,Java慢慢不再是安卓开发的首选。比如下面这些语言,就是比较热门的选择。 3.2.1 Kotlin 成为 Android 开发的首选语言 在2019年的Google I/O 大会上,Google 官方正式宣布,Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言。Java 占据 Android 开发绝对统治的时代一去不复返了。Kotlin 可以编译成Java字节码,可以在JVM上面运行,也可以编译成JavaScript,在没有JVM的机器上运行。Kotlin语言比Java更安全,更简洁,随着谷歌爸爸推崇,将来的发展前景可期。 3.2.2 Flutter 框架和 Dart 语言 这两个都是谷歌最近推出的东西,Flutter是一款用于帮助开发者在iOS和Android两个平台构建高质量原生应用的全新移动UI框架,Dart是由Google开发的一门全新的计算机编程语言,而Flutter使用Dart语言开发。Fuchsia是谷歌开发的一款全新的操作系统,Flutter 是 Fuchsia 的开发框架。Flutter编写的代码可以同时生成IOS和Android两个平台下的应用程序,因此Flutter框架逐渐热门。 3.2.3 大前端时代下的H5应用 随着时代发展,现在的前端不再只是写web网页,而是逐渐发展为大前端,web,Android,IOS通吃,H5应用的流行就是一个例子,大家应该都发现,手机上开始出现快应用,小程序这些使用前端语言进行开发的app,这些应用使用HTML,JS和CSS进行开发,无需使用Java。相比之下,H5应用轻量级,启动快,跨平台,用户体验方面也逐渐开始接近原生应用的流畅度。因此大有流行的趋势。 3.2.4 小结 这一小节介绍了安卓开发的现状,Java作为曾经的安卓开发第一首选语言,正在面临诸如Kotlin语言,Flutter和Dart语言等新的开发语言的挑战,同时,随着安卓应用开发逐渐出现H5应用的趋势,前端语言也逐渐开始来到Java的地盘。 四、Java不擅长的领域 4.1 前后端分离和JSP的没落 JSP是一度火爆的技术,Java曾对其寄予厚望,希望通过JSP技术占领web应用程序领域。然而,随着网页开发越来越复杂,用JSP开发网页变得很麻烦,前端和后端混杂在一起,开发效率很低。因此前后端开始分离,而JSP这种运行于服务器端的网页程序也就慢慢退出了舞台。 4.2 C#和.NET抢占桌面程序地盘 Java曾经也被广泛用于开发桌面客户端,其中Swing框架就是一个有名的GUI框架。然而,曾经想要扼杀Java的微软,开发了C#语言。C#成为Java的竞争对手,C#编写运行于Windows系统的桌面应用程序上具有优势,Java写的桌面应用,虽然可以跨平台到处运行,这对于程序员当然是好事,但是对于用户来说,在Windows上运行个Java程序还得安装JRE,显得十分麻烦。而且,Java桌面程序运行起来比C#程序慢。因此,C#和.NET逐渐占领了桌面应用程序的市场。 4.3 C/C++活跃的嵌入式系统领域 Java曾经是为了嵌入式系统开发而设计的。然而,Java程序员并不能直接操作硬件,并且,Java是相对较重的语言,对内存等硬件资源不友好,执行效率也相对较低。而在嵌入式系统中,往往只有很少的内存空间,却对运行效率有很高的要求。因此,在嵌入式领域,更多的是C语言和C++甚至是汇编语言的天下。 4.4 小结 这一小节主要针对Java所不擅长的领域来讨论。可以看到,Java最为有名的特性“Write once, run anywhere”,也成了它最大的缺陷:在执行效率上做不到卓越。因此,在桌面应用程序和嵌入式系统两个领域Java不是王者。而随着时代发展,前后端分离,JSP也被时代所抛弃。 五、总结 综上所述,相信大家对于Java语言有了更全面的了解,看到了Java背后的芸芸众生,各种层出不穷的高级语言和新技术,和Java相爱相杀。Java作为现在世界上最热门的编程语言,依然在各个不同的领域具有重要的地位 ,Java的强大之处在于,它十分全能,几乎没有什么是Java不能做的,但它并不都是做得最好的,我们也可以看到许许多多的竞争者在不同方面比Java语言更加优越。 但是,我写这篇文章的目的,不在于比较各个语言的优劣,各种语言都有自己的优点和缺点,我们也不必因为某种语言更好就着急转语言。总而言之,语言只是工具,各种语言之间,语法的差别都不是特别大,背后的原理也是大同小异,往往只是多了几个新特性,而语言背后的编程思维才是最重要的。
剑曼红尘 2020-04-09 14:29:42 0 浏览量 回答数 0

问题

github网站怎么用

我想练习C语言,听同事说github有很多项目我可以做项目练习C语言,可是我注册好了,ssh也好了,该怎么找c语言的项目啊????...
游客bnlxddh3fwntw 2020-04-24 21:52:32 2 浏览量 回答数 1

问题

极光推送一个朋友,三四天的Rails学习之路? 报错

极光推送一个朋友,三四天的Rails学习之路? 400 报错   最近因为一位极光推送朋友,我开始了大概三四天的Rails学习之路,最终达到的水平是可以比较轻松地做出大部分功能,然...
优选2 2020-06-04 21:19:39 3 浏览量 回答数 1

问题

极光推送一个朋友,三四天的Rails学习之路? 400 报错

极光推送一个朋友,三四天的Rails学习之路? 400 报错   最近因为一位极光推送朋友,我开始了大概三四天的Rails学习之路,最终达到的水平是可以比较轻松地做出大部分功能,然...
爱吃鱼的程序员 2020-05-29 19:26:23 0 浏览量 回答数 1

问题

极光推送一个朋友,三四天的Rails学习之路? 400 报错

极光推送一个朋友,三四天的Rails学习之路? 400 报错   最近因为一位极光推送朋友,我开始了大概三四天的Rails学习之路,最终达到的水平是可以比较轻松地做出大部分功能,然...
爱吃鱼的程序员 2020-06-02 13:32:16 0 浏览量 回答数 1

问题

什么是微型语言

  在真正领略Linux下各种微型语言那震人心脾的功效之前,我们应该先要搞清楚一个问题——什么是微型语言?   在计算机这门科学技术诞生之后的几十年里,人们经过对大量的软件错误模式进行深入研究之后&...
jagen 2019-12-01 22:08:14 21437 浏览量 回答数 11

回答

没有一个初步的战略 大多数没有计算机科学或数据分析背景的工程师想要在数据科学中开始一个新的职业生涯,他们没有一个明确的战略,没有成为数据科学家、分析师或工程师的明确步骤。他们试图尽可能快地用信息填满自己的脑袋,而不是真正深入到特定的主题;他们倾向于一次注册多个在线课程,从不同的网站下载几个备忘单,阅读许多作者的文章,但没有一个结构化的计划。在开始这段旅程之前,我强烈建议你制定一个学习计划,并列出一些日常习惯,以实现你的目标,增强你的分析和编程技能。对你想从事的行业使用的最流行的编程语言和软件进行自己的研究,搜索最广泛使用的库和包,并根据你的目标选择最适合你的编程语言和软件。坚持和练习会使你成为大师。 尝试同时学习几种编程语言和软件 新程序员常常会受到诱惑,想要同时学习几种编程语言和软件,把它们作为技术技能写进简历。虽然你可能认为这是一种营销自己的策略,但它往往会适得其反。拥有数据科学、数据分析师和数据工程职位的公司和组织更有可能要求应聘者具备一种或两种或最多三种编程语言和软件的坚实背景。很少有职位要求你同时精通Python, R, SQL, C, c , c#, Matlab, Java, Ruby。相反,你应该研究一下你更可能在某个特定行业或公司使用的编程语言和软件;掌握你的编程和分析技能,并成为真正的专家。你将认识到,所有编程语言之间共享一个公共逻辑和类似的函数,在此之后,从一种语言到另一种语言的转换只需要学习一种不同的语法,而不需要学习它背后的整个逻辑。 没有在代码上写注释 尽管这听起来很明显,而且是一个无关紧要的任务,但它代表了一种很好的策略,可以跟踪每一行或每一块代码执行的操作,以便返回到暂停的项目。在最初的代码编写过程中,程序员对项目的目的和目标有了清晰而清晰的认识;他们知道自己想要编写的程序背后的逻辑步骤和追求的结果。然而,由于多种原因(经济约束、信息缺失、优先级的改变),所有的项目都很容易暂停,这将迫使程序员切换到不同的任务,而让先前的任务保持不变。一个中断的项目需要的时间越长,就越不容易记住它的位置和缺失的点。这里是注释发挥作用的地方。试着在你认为有必要的地方使用它们;记住要足够清晰,并记住它们应该允许代码程序员和执行者理解代码背后的逻辑步骤。 在代码编写过程中不要求反馈 在你的经理要求你做什么,他/她希望你做什么,客户要求什么,和你实际做什么之间总是有很大的差距。当你在开发一个程序或新代码时,试着把它分成几个阶段,并在进入下一个阶段之前征求反馈。在每个阶段结束后得到反馈,这将让你知道你是否正确,或者是否需要根据客户的要求进行更改。这并不意味着你无法理解其他人的要求,而是将其视为利益相关者之间的想法和期望的统一。如果在偏离正轨的情况下,你收到反馈的频率越高,你需要进行的修改就越少。请记住,持续的沟通对于每一个项目的成功实施都是至关重要的。 没有测试你当前的知识 你可能已经看了很多逐步编程教程。你可能也读过许多数据科学书籍和编程书。你可能已经完成了许多编程训练营的练习。下一步是什么?测试你目前的知识。这种训练营和课程的真正价值不在于证书本身,而在于你学到的知识,并能成功地应用于解决某个问题。老实说,每个人都可以通过参加在线课程来获得证书,只要跳过大部分的课程就可以了;公司和组织都非常清楚这一点。尝试把自己推向新的极限,在网上寻找编程挑战,尝试头脑风暴,在没有太多帮助资源的情况下编写代码。这并不意味着你在实际工作中不会用到它们,但它会让你感觉更舒服,更安全,更少依赖它们。 没有充分利用优缺点 在某种程度上,你可能会觉得使用一种特定的编程语言和软件是很舒服的,而你可能会发现学习一种新的语言和软件是没有用的。我曾多次听到数据分析师争论哪种编程语言在能力、可用库和包、在线资源和流行程度方面是最好的。但是,你必须足够谦虚,认识到总有从另一种语言、库、包或软件中学习新东西的空间。每种编程语言和软件都有其优点和缺点,但是我们的目标是充分利用它们,并具有足够的灵活性,以确定最适合用于特定任务以解决特定问题的语言和软件。 假设你什么都知道 相信我,没有人什么都知道。数据科学领域非常广泛,每天都要学习新东西。库、包、函数、方法和算法的总数非常多。永远保持好奇,保持谦虚,如果你认为你知道的很多,你实际知道的就很少。 原文链接: https://blog.csdn.net/fendouaini/article/details/103252444
茶什i 2020-01-15 11:57:21 0 浏览量 回答数 0

回答

上述几种语言都可以,只不过是应用程序的不同表现而已 如果是类似php这种语言的话,做出来就是web应用,需要依赖于web容器来运行而通过浏览器来展现。做本地化程序的话,VC、C#之类的可以胜任,java主要来说是编写web应用,本地程序依赖于JVM,普及率不广,而且UI超级烂,故而除非特定场景,否则不作首选 ######回复 @eechen : 这条说的在理,管他黑猫白猫,能逮到老鼠就是好猫。######回复 @焙焙龙 : 能解决楼主的问题就好,我管它是不是什么本地化程序。Linux上一大堆命令行程序,其中不乏脚本类命令,不专门去纠,根本区别不了。又比如,PHP内置SQLite引擎和HTTP服务器,代码用PHP-Beast加密,打包PHP环境部署到客户端,也就10MB左右,用户用浏览器就能访问服务,只要能解决问题,我管它是不是桌面程序。######回复 @eechen : 关键看这个语言是否具备本地调用的能力,脚本语言都不具备的,php本身也是脚本语言,必定依赖于某一个宿主去执行,脚本语言的入口是宿主语言规定的。所以光用脚本语言,是完全无法编写本地化程序的######不一定呀.PHP写CLI命令行应用,直接用curl函数发出HTTP请求进行发帖也是可以的.跟用PHP写爬虫区别不大.######你需要一个按键精灵######按键精灵不能完成我要的,按键精灵还是太简单了。我想我已经找到我要的了。hex就是我要的###### Visual Basic 6.0 新建标准Exe工程,编译即可得到exe程序。  ######+10086######HTML######试试按键精灵,支持编程的。######1,自己写按键精灵脚本 2,再试试火车头是否复合你的需要。######3,PHP也能完成你要的那种自动发帖的语言吧,而且很简单######用JAVA吧  语言和C#差不多   IDE 有NETBEANS ECLIPSE 土豪请用IDEA。
kun坤 2020-06-09 13:38:58 0 浏览量 回答数 0

问题

Go语言编程有哪些利与弊?编程时如何判断是否应该用Go?

我们喜欢 Go 语言的地方 近年来,Go 语言的使用量呈爆炸式增长。似乎每个初创公司都将它用于后端系统。开发人员认为它如此广受欢迎,背后的原因有很多。 Go 语言速度非常快 Go 语言是一门非常快速的编程语...
有只黑白猫 2020-01-06 13:37:29 15 浏览量 回答数 1

回答

Re请问比赛对于编程语言有要求吗 其实用什么都可以,第一季最主要的要把思路打开,效果做上去。 等第二季在学平台支持的语言不迟~
天猫_得福 2019-12-02 02:51:40 0 浏览量 回答数 0

回答

学计算机的算法很重要的大哥,可以说你只会c语言可以,但是你不会算法就靠边儿。做程序设计语言什么的都是小问题,不会算法没有人会雇用你的哦。
小旋风柴进 2019-12-02 01:20:04 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT