前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何快速使用从未学过的语言实现项目开发

如何快速使用从未学过的语言实现项目开发

作者头像
三哥
发布2019-01-24 10:50:00
6570
发布2019-01-24 10:50:00
举报
文章被收录于专栏:java工会java工会

如果你遇到过需要使用从未学过的语言去实现业务需求,或者你想快速入门一门新的语言,这篇文章值得你阅读参考。本篇主要讲述类似场景的方法论和我自己的实践故事,大神可以绕着跑了。

1.那些应急上马又不得不上的项目


有时候我们会突然接到紧急的任务,使用新的语言去实现一些软件功能,亦或接到公司的转型项目,比如原来是C#写的,现在项目要求使用Java去写。或者为了工作快速入门一门新语言,我们第一需求就是完成它,更好地完成它。

现在需要实现这些业务场景需求,要么去招聘新的人员、要么使用现有程序员去学习新的语言去实现它。前提是这些业务需求场景是有时间限制的,必须在规定时间内完成。

这很为难,招聘新的人员带来公司的成本,需要对招聘的人负责人,如果这个项目做完了,人又多出来了,对公司来说很不划算。老板自然不愿意多投入。有时候招人不是你想招就能招,招聘一名与公司价值观相一致的正常要半年,如果是启用老员工去做这件事,可以增加现金激励、升职加薪激励,让愿意干的员工去学习新的知识,员工自身可以增加项目经验、学习到新的技能,公司也省了不少成本。那么现在的问题是责任落到了这个员工身上,他面对的问题就是“如何快速的学习新的语言或技术,快速的应用到业务场景上呢?

我有幸做过不少类似的需求场景项目,激情奋战之后,积累一些经验,与大家共享,一些理论,我曾经与人探讨,但大多是不同意见者。

2.编程语言的本质


我们使用某个编程语言,但绝不会超出这个语言本身的特性。甚至可以说,我们编写软件都是出自语言本身的API,我们只是搬运工。

我们的高级语言不论是PHP、ASP、C#、Java还是C++、Lue、Javascript等等他们都有哪些共性

1.在操作系统上运行 2.最终使用了二进制

从这条特性上来说,我们写的所有的语言都是二进制的不同体现。“条条大路通罗马”我们只是走了不一样的路。

我们(使用语言的人)是使用某种语言,我们只是在使用语言,并不能发明某种语言之外的特性。

当我们编写某种软件功能的时候,假如我们编写网络通信,我们需要调用语言作者提供的接口来实现,或者借助语言本身提供的底层技术来实现,但是我们并不能发明更多的接口或技术。我们是使用者,如果一种语言不支持多线程,那应该是语言不支持,而不是所在的环境不支持。

所以本质上来说,语言所有的特性对我们使用者来说,是已知的,可认知的可实现的。那么最好的学习资料应该是语言开发者的提供的文档和示例。

那么是不是我们必须学习完所有的特性才能编写软件,只要写过两种语言以上的人来说,编写软件功能的逻辑是差不多。所以我们知道了如何编写软件,使用新语言就想堆积木一样,你需要什么的函数、方法你去库里找到它和它的使用事例,重要的是我们架构软件的方法,而使用什么样的语言都是可选项。

3.编程语言的快速学习方法(实例)


总会有一些方法论,指导着我们学习进步。

2015年的时候,公司有个app,民生银行的tpa软件,那时候做ios app还是比较热门的工作,招聘一个的成本还是相当的高,主要做完之后又不在需要这个岗位,我作为公司骨干,毅然挑起重担,因为老板开心、自己也想了解下编写ios app的快感。

1.基本语法的了解

对比学习法,我对object-c基础知识做简单的了解,当时买了本书,学习一门语言的基础知识就是边看边写边练边记录成博客日志。我大概花了两周的时间完成所有基本知识的学习和事例的编写。

这个过程中,我了解了object-c语言的基本编写语法,熟练掌握了Xcode使用。

当然正如《极客时间》红人耗子叔推荐的那样,学习语言最好做类别学习,我是把IOS的object-c跟C#做对比(当时我最熟悉的是C#),了解学习起来就特别的快。

2.业务分析

了解了基本语法、IDE的使用后,就是对目标业务需求做一定分析,找到知识点,找些相关联的开源的代码下载下来训练。

我做的是保险TPA软件,就是保险理赔手机客户端,主要涉及知识点包括:界面布局、界面后台的按钮时间、页面加载销毁等事件、页面跳转、页面间信息共享、以Json形式调用服务器接口、文件上传、版本自动检测升级等。只要写过客户端的(html客户端、winform、linux桌面、java桌面等后面会分享)都知道这些都是构成客户端软件的基本要素。这些软件非常容易找。例如类新闻客户端、oschina的开源客户端都是可以的。

我找到这些客户端源码,在本机先调试起来,然后依据记录下他们的涉及到知识点的功能点在哪里实现(注意我并不需要完全了解是怎么做的)。

这个阶段我花了大约2周的时间,有人说这么短的时间,了解不够,我并不需要了解学习每个代码每个知识点,主要对软件整体的知识、软件的架构的了解,对比与已知软件的异同。

3.项目架构与关键技术

就是开始架构阶段,这个阶段通常是我最花时间的阶段,我通常考虑一个架构方式,需要通盘考虑他的可用性、可扩展性。这个阶段我对关键技术进行实现。

例如当采用何种界面、代码架构模式,我采用的是界面与代码分离模式,没有采用story模式,也没有采用纯代码模式(后来第二版本我改成了纯代码模式)。这种mvc的架构模式最适合初学者特别是知道c#的mvc或者java的mvc的学习者,当时考虑了很多,怕自己一但定下来,后面遇到问题就很难做下去。

当时在架构阶段我实现了:界面代码的搭建模式、实体类的创建(因为当时服务端的接口以及给出来了)、列表的实现、列表的分页、文件的上传、页面的信息共享、页面跳转、基于http/https的post、get方法、json的编码和解码等主要关键点。

这个阶段我花了3到4周的世界,大部分时间是在思考,实例代码其实在上一个阶段就有框架了,只是在这个阶段把他填充时了。

4.项目编码阶段

这个时间UI已经出来了,高保真图和切图都已经做好了,我进入到真正的编码阶段,这个阶段反而编码很快,只是对我这个新手来说经常要去google搜索一些基本语法的使用,这看起来对oc编程者来说很可笑。

这个阶段我大概花了1个月的时间。

项目编写很顺利,不会的去google查询,遇到几次闪退,有的就是xiaobai常常遇到的问题,有的到google多搜索几次就解决了。

5.上线

测试很顺利,因为没有多少东西,接口api已经是测试过的,客户端没有多少权限问题,剩下的是几个不同尺寸的适配问题,感谢乔帮主,iphone设计的如此完美,适配已经不成问题。

最后顺利交差。

方法的普适性 这些方法是否适合不同语言,我原来是写ASP出生,我用这种方法直接应用到IOS App、Java桌面程序、Android客户端、Linux QT主机监控程序等等。就我自己而言,不同语言间是具备普适性的。不同的人之间是否有用这种方法,我没有特意去调查,但我坚信这套方法论是没有问题。当然各个人的学习的方法各有不同的,本质上应该有相同的地方。

4.总结一下快速学习步骤


1.基本语法的了解,了解新语言的基本语法和相关知识,主要方法就是不停地取编写示例、运行示例、写博客或日志。

2.业务分析,对当前的业务需求做技术点分析,可表述为关键技术的实现(相对于技术小白的关键点),可以找到类似开源的项目或半成品下下来程序跑起来、日志记起来。

3.项目架构与关键技术,寻找对本次项目的最有效架构,架构实际上跟具体语言是没有关系的,但是也要考量语言实现的难易,并把关键技术统统实现预演。

4.项目编码阶段,这个阶段跟其他项目的编码阶段没有差异。

5.上线(后面步骤不写了)

当然速成方法的优势是快速应用,如果要深入了解继续加强,总的方法就是多看、多练、多写、多教(写博客教别人用、写教程给别人参考、录视频做分享等)。

我分享的方法只适用于应急场景,那些勇于专研某个领域的人,则不屑于这样的方法论。

文: 博客园 fishpro

推荐阅读

代码语言:javascript
复制
print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!";
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java工会 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.那些应急上马又不得不上的项目
  • 2.编程语言的本质
  • 3.编程语言的快速学习方法(实例)
    • 1.基本语法的了解
      • 2.业务分析
        • 3.项目架构与关键技术
          • 4.项目编码阶段
            • 5.上线
            • 4.总结一下快速学习步骤
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档