赞
踩
软件开发语言非常多,根据TIOBE编程语言排行榜中可以看出在榜单上就有50种以上。所以技术无涯,人生有崖。对技术要有敬畏之心。我们今天讲一讲其中的几种语言,希望能给大家以启发或者共鸣。
首先,我们先来看看iOS,iOS又分用Objective-C语言开发和swift语言开发。其实现在这两种语言都各自有各自的市场,在中国,用oc还是比swift的公司多,而且有些大项目,因为之前的基础在oc上编写,所以轻易也不会完全重构为swift项目,可听说抖音,快手就是swift开发的。
记得swift3.0之前,各种API变动特别大,差点面目全非,所以那时追热点的技术小伙伴们都说学不动了,想等到稳定一点在学习。2017年以后,swift越来越稳定。现在看苹果公司正在努力向swift+swiftUI来转型。
最终会达成什么效果就不得而知了,可有一点可以确定短期内,oc一定会和swift共存。毕竟很多公司都已经在用oc,并且整个oc虽然是闭源的,可生态完整。而且runtime等黑魔法也是swift没有的。虽然很多一线公司也用 swift开发,可oc的还是大多数。
当然oc是消息式语言,起名字一大串字母,刚开始学习的人可能看着就觉得这是一串什么东西,这么长。这是布莱德·考克斯先生发明的语言,他的规定,所以必须遵守。
iOS开发中oc经常用到的第三方就是ASIHTTPRequest,这是网络请求的框架,很早已经不更新了,还有AFNetworking,也是网络请求的, Fmdb用于管理数据库的, Masonry,用于代码布局的, MJRefresh刷新的,JsonModel把json数据转换成model的,cocopods,类似Java里的maven,Android的gradle,自动管理第三方的一个集成框架,等等,还有一些地图,分享,推送,支付,音视频,即时聊天等第三方集成商。
Native系列的Android端也是用Java语言开发,现在也新推出了kotlin,Google公司为了摆脱底层硬件厂商的束缚,像iOS一样变得有话语权的一次尝试。现在也是不温不火。毕竟涉及到很多利益,不是那么容易就通过一个新语言达到资源整合的目的。可是用kotlin公司也不少吧。
Android里开发网络请求的volley, okhttp。gson,model和json转换的框架。SmartRefreshLayout,刷新用的。同样也有地图,分享,推送,支付,音视频,即时聊天等等第三方集成商。
这些属于移动端的Native家族。还有比较火的前端,也就是写一次代码,可以发布到各个平台。对于初创企业,小项目来说,是比较节省成本的,因为一个前端工程师就可以开发两个平台,Android端和iOS端。当然还有WindowsPhone,其实现在移动端,主要就是Android和iOS两家。
之前是H5,也有提大前端的工程师的说法,就是iOS,Android,和前端都能开发,相信,很多同学现在可能都已经做到了,当时的说法是大前端是为了发展方向。移动端前端,有ionic2,ReactNative等,当然ionic2已经把ionic改的基本面目全非,变得更模块化,解耦程度更高。ReactNative其实是有学习成本的,他需要一些iOS,Android的原生知识。
可以通过Cordova 把ionic2的程序打包成Android,iOS两个平台。ReactNative 则需要iOS,Android原生的支持打包。同时iOS涉及到苹果开发账号,按年收费,需要开发证书,提交审核等一系列操作,原先是1-2个礼拜会告诉会不会通过审核,当然可以申请加急,现在苹果可以3天就会告诉通不通过了。这一点也可能有出入,因为没在iOS的一线有一段时间了。
android审核就没那么严了。毕竟是开源的,当然iOS的swift也是开源。现在也有Flutter,Weex等,这些就没接触过了,Flutter最近非常火。总之,前端的大佬们就是想抢占Native的市场份额。之前性能一直比不上原生,听说Flutter自己写的引擎,性能跟原生差不多。
其实我本人觉得大型项目一定要用原生,无论是生态,技术的成熟度,相关人员的招聘,储备,都是有保障的,Flutter虽然性能不错,但不一定能做到比Native好的程度。而且猜测一定在某些方面有缺陷。这是移动端的,分为Native,web移动端,Hybird移动端, ReactNative ,Flutter
后台的最重要的就是Java了,Java有SSM,springMVC,spring,mybatis。或者SSH,SpringMVC,Spring,Hibernate。JQuery。springboot,springcloud系列。
整个后端分为API接口,CMS管理端,现在又有了大数据开发,大数据分析,人工智能等等业务。从单体架构,到水平分层架构(SOA),再到微服务架构,再到service Mesh服务网格架构,典型的代表有istio,解决了基础设施跨语言通信问题。
微服务架构,从注册中心(zookeeper,eureka,nacos),服务消费(Feign),客户端负载均衡(ribbon),熔断降级(Hystrix),服务网关(zuul,kong,gateway),配置中心(config,apollo),服务监督(springboot admin),链路追踪(Google的Dapper,Twitter 的Zipkin,以及阿里的Eagleeye (鹰眼)),等等。
还有关于分布式锁(etcd),RPC框架(dubbo),分布式事务(XA,saga,两阶段提交,三阶段提交),幂等,CDN,服务端负载均衡(ngnix,LVS,F5),关于高可用,高可靠,高并发,异地双活,中台问题,还有大数据分析(ELK),大数据平台(Hbase,Hive,Spark,Flink,Hadoop),MQ(RabbitMQ,RoceketMQ,Kafka),Docker/Kubernetes,RDBMS,Nosql,Newsql,CI/CD,serverless,等等,后端Java涉及到的东西太多了。所以,Java才是发展后劲最强的语言。
强大的生态体系,包括企业,各种组织,个人都是非常成熟,完备的,而且Java的稳定型决定了他一定是大型项目的首选。当然小型的选择PHP,Python都可以。
PHP有Laravel,Yii,Symfony,zend framework,codeigniter,ThinkPHP等。刚入行的小伙伴学习ThinkPHP上手快。我只接触过Yii,ThinkPHP,ThinkCMF,配合phpstudy来使用就可以,其他的没接触过,不过听说Laravel是很多人关注的一个框架。Python的Flask框架就可以开发小型web项目。
一般一个Java终极高手,年薪都会突破百万以上。
相对的移动端,我就很少听说有人会拿到百万级别,而且人数一定比Java的少。当然高薪人士技术只是能力的其中一项。
最后想说的是,一切架构都是随着场景迭代,要根据当时公司的业务情况,员工的技术能力,资金,工期,选型的技术生态等等情况综合考虑。
同样,人生也是一样,要根据自己现阶段的能力,资金,人脉,认知,时间,性格,价值观,教育背景,经历,工作背景,家庭情况等等做出综合性判断,来不断突破自己,打怪升级,干就完了。
希望大家都会过上想要的生活。
点击留言
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。