2018@Swift
开头
Swift从WWDC2014发布,到今年的WWDC2018,已经有整整的四年时间了。在这四年中,产生了很多个版本的Swift。从Swift1.0(1.0,1.x, 2.x , 3.x )到最新的Swift4.2 已经有不下5个版本。而这每一个版本的后面,都能看出苹果的激进,对于API的大幅修改,导致业界有一个学了一门Swift,每个版本都是在学一门新的语言的调侃。
在Swift1.0 官方发布后,以梁杰为首的一批SwiftGG 前期成员即刻着手翻译《The Swift Programming Language 》,经过十多天的努力,一份中文版的《The Swift Programming Language》中文版出现在大家面前。翻阅中文版的时候,看到了一句比价霸气的话“这次,中国终于和世界同步了”,从此便开始关注了Swift这门新的语言。
2018@Swift
Swift GG组织的中国Swift开发者大会,已连续举办两届,2018@Swift为第三届中国Swift开发者大会。
议程安排
此次开发者大会的时间为 2018 年 09月 15 号,周六
上午议程.png 下午议程.png
主题
iOS Architecture improvements with Swift
AndyyHope 从MVC,MVVM,VIPOR ,讲述了各种架构的好处和缺点,最后给出了一个通过JSON配置页面的Nemo。通过修改JSON数据格式,控制App中的不同页面展示,控制页面中不同数据的位置,觉得在一些App中,觉得在灵活性上,还是有一定的有点的。
AndyyHope 的英文演讲,其中的内容觉得也就接受了一半而已,Nemo 需要自己消化一段时间,其中的巧妙设计完全可以用在以后的项目中的。
提问嘉宾的英文能力还是不错的, 能全场和Andy 无障碍交流,虽然是chinEnglish, 但是这种自己的的自信是我现在不具备的。
从Swift 到机器学习
喵神的幽默的看场方式,以及对于游戏中这个萌萌的动作选中,最后这个萌萌的动作成了大会中的标准卖萌表情。
其中讲到了Create ML 这个框架,还有自己对于一个视频通过Swift脚本切割每一帧的图像,还是惊喜满满。
怎么用Swift写解释器以及实用场景
戴铭老师的这个session中,已经被精美的PPT萌化了,讲到的内容中,只能获取一二,真的不怪我,只怪PPT太精美,让我沉浸在其中了。
下面来几张拍的PPT。
编译器.jpeg 编译器的作用 操作符.jpeg 喵神课堂.jpeg 语法树解析.jpeg
猿辅导从OC到Swift的迁移之路
巧哥的这个猿题库Swift迁移之路,可以说是磨难之路,三个产品中,猿辅导相对来说比价顺利,其中的编译慢的问题,Xcode不友好的问题,自己在以前也是遇到了,想不到经过这三年的发展,Xcode的发展还是没有跟上Swift的发展,这个开发人员造成了很多的困难,也就让一部分开发人员望而却步。
其中巧哥提到了,他们的小猿搜题,重新用Swift开发,然后想着赶上需求,自己觉得巧哥还是太年轻, 我们的产品经理的需求比吃饭睡觉还要准时,你怎么能指望赶上呢。
项目重构这一块,我觉得还是有话说的,我们从去年7月份开始在主产品上做模块化,经过和Android组的讨论,觉得最保守的方式或者说是行之有效的方式就是在现有的基础上,单开一个项目或者单开一个分支做模块化,坚决不能推到重做。而iOS组比价保守,就选择在最新版本的基础上开始拆分模块,每人负责几个模块开始,其中的新需求就是边做,边迁移到模块化工程(谁负责的新需求开发,谁负责迁移到模块化工程),从4.7 到5.2 五个版本的追赶,最终在5.2 需求在模块化基础上开发并顺利发布。
Android组是选择重新写,从最基本的架构开始,到模块拆分,一年多了,已经变成了烂尾(Android组中间出现人员变动也是一个原因);以后新的需求还是不断的来,这样版本越追越追不上了;时间拖得越长,到时候导致烂尾的风险更大。现在和Android组聊天,聊到模块化项目,也在做,从表情中能感受到其中的痛苦。
其中的模块化,可以说是我们技术人员的一厢情愿。其实QA的同学才不管你这个工程的技术实现。他们只关注健壮,没有bug 就可以了。而我们的模块化最后会导致人家的加班等,所以拖得时间越长,QA这边也是会困难重重。不可能把每一个版本的功能都走一遍的。在iOS组的模块化完成后,QA也是跳票好几次,模块化项目上了,皆大欢喜。
话又说回来了,高风险带来高回报吗?选好了,就开始革命吧。
Strings Seven Ways
刘镇夫老师的这个字符串的七种方式,回顾了一下ASSIC 码到最后Unicode码的转变。对于刘老师的多种人类语言的掌握比较惊讶。
Live Code
糖炒小虾,虾叔的Swift在Server side 的支持,并且在生产环境中,使用Swift去替换Ruby的功能, 勇气和能力令人叹服。其中讲到Vapor的性能优化,在工作中,效率较Ruby提高300%领我感叹不已,并说道和Go的性能差不多的时候,我都有种要放弃Go的冲动。
Swift Server side 自己也是一直有了解的,但是没有想到这几年的发展到这个地步,这种发展还是让人有所吃惊的。
Swift For Tensorflow
莲叔的这个session,和喵神上午的Session是有很多相似的,
其中喵神是用到了苹果提供的Create ML来训练模型的。莲叔则是选择用Swift for Tensorflow来训练模型。
莲叔的值通篇英文的PPT也是很拉风的,内容也是充实。虽然在Chris Lantiner 发起这个项目开始就有关注,但是在莲叔呈现在会场的时候,被震撼到了。
其中的协同分类(Collaboration Classify ) 和 协同过滤 (Collaboration Filter)内容详实,好多的数学公式觉得需要再次学一遍高数了,作为一个互联网的老兵,让我看到了一个老兵的风采。
做一个有趣的多人AR游戏
这个Session自己没有听讲,有点遗憾。
总结
整个参会的感受就是,震惊,收获颇多。其中不光有讲师的风采,同样有一个个参会者的突出。如果填调查问卷反馈,我觉得全部给满分,能在这么短的时间内,让我们看到Swift的光彩和Swift的坑,真的足矣。下届@Swift举办的话,一定会参加。
在和喵神的聊天中,知道了国内的互联网和日本还是有很大不同的,两个都有好处,觉得就是两个不同的发展思路不同而已。其中喵神说到Line 公司的测试很专业,说自己提交代码,觉得一个问题也没有,都会给你能找出十多个bug,保证了线上几乎是没有bug的,所有他们就没有对热修复的渴求。在聊到跨平台的时候,他们也是没有这种需求的,国内对RN,Weex,Flutter很是追捧,求变也是国内互联网发展的一个原因。其实所有的根源,在于两边对于软件的开发规范和产品迭代的思路不同,日本那边需求几乎是半年都不会有多大变化的;而国内,几乎每一个版本都是对上一个版本的否定,这样就导致QA测试不充分,软件质量的下降。喵神的“守护原生开发者尊严”觉得在国内还是不好守护的。