才发现的连合jsdadajs计算当前时间所在周,没几天竟然wwWjsdadacom又不管啦

497被浏览112,572分享邀请回答Keymetrics.io哇,这位大神是法国人,他的英语口音有些像印度来的,不过不要在意这些细节啦,还是那句话,因为我没有搞过node,所以……只能看演示了,我只是大致知道它用来做node集群的管控,细节并不了解。六、Nodebot session introduction这个好玩了,用js控制机器人,其实就是嵌入式的东西包装了一层结构,使得调用方的学习成本更低,大家可以不再用c那么麻烦的东西,直接用人人都会的js就可以操作硬件了,语法是跟node差不多。细节也没什么好说的,就是各种api的使用,一看都能会。七、Lighting Talk环节额,具体这里讲了几个东西,印象不深了,就记得妹子上台演示她的webgl算法,气场强大,水平又高,人还长得好看,没法活了……噢,还有小宇上台cosplay了substack,哈哈。八、如何构建配置集中管理且自动调度的应用集群额,文老师不好意思,这段的时候我忘了自己在干嘛了,所以……写不出,但我保证肯定没有在跟旁边水手妹说话。九、The Rise and Fall of JS Frameworks这个主题,讲师说话风格跟我有点像,声音小,而且说得快……还好他观点我是知道的,就是说了各种大而全框架的弊病,可以用每个细分领域中比较好的库来组合使用,这样更好。这个事情很难说,因为有能力整合各种库的人毕竟是少数,另外一个方面,针对不同场景整合的套件其实也就是那些框架。十、前端技术在数据可视化领域的无限畅想这个是echarts团队的分享,非常好。首先是效果赞,其次是把核心的东西都讲出来了,比如说,残影效果怎么做的,比如说,怎么实现canvas上面的一些仿dom的事件之类,总之全是干货,而且浅显易懂,强烈推荐没有参加的人看看。十一、NERD DISCO: The Next Generation这个特别拉风,演讲者用js把声光效果结合起来,在会场营造了夜店的效果!!!(当然叔叔我从未去过夜店,以上纯凭想象),实在太赞了,我没法描述,只有身临其境才能体会,没看到的同学们,我为你们遗憾。老外太会玩了!【下面又是水了!!!】早上我右边空一个座位,我跟basecss几个人说话,来了个女同学坐下了,看着很面熟,然后惊奇地发现她是csdn的编辑
,她去答题领了7牛的纪念品,5个可爱的小牛,顺手给了我,正好带回家给熊孩子玩。微信群里,一直有人在讨论水手服妹子什么的,一贯纯洁的民工叔并未立刻反应过来什么是水手服,但是根据他们说的,应该在我附近,四面看了看,没有发现迹象,以为他们说的是紫色漂亮裙子的
同学。到下午的时候,突然反应过来,貌似就是我左边的妹子………………兔八哥的小徒弟。basecss3给她介绍了我,然后她说,叔叔我加你微信吧。睿智的民工叔当然就拒绝了,叔不加女的,哈哈哈哈。后来她趁我不注意,用我做背景拍了个自拍发在微博,你们能翻到吗,哈哈哈哈。(就算找到也是没有任何奖励的。)这次过来,
又黑我了,他!竟!然!问!我!说!你是全场年龄最大的吗?不过叔当天晚上就报仇了,具体怎么报的,要往下看。下午的时候,糖饼来了,也是第一次见,在我认知中,这是跟百度上研的灰大(
)齐名的帅哥,然后成功合影了,goddy给我们几个照的,用的糖饼的相机,你们看,随身带相机的,这才是专业。另外还看到了认识10多年的
,也第一次见啊,心里那个激动,当年大家还都是青春年少的码农2货,转眼都是大叔了。记得那时候每个月至少几十个人问他是不是佛山来的,能否表演黄飞鸿之类,搞得他只好在佛跟山之间加了一个点……今天的抽奖环节,作为中奖专业户,在d2的时候能够同时在主会场、分会场中奖的叔叔我果然又中奖了,朴老师的深浅书,这书到现在我至少买了30本送各类同事朋友了……于是顺手又送给一个之前从南京到深圳工作的小伙子。抽晚上自助餐券的时候倒是没抽到我,旁边的水手服妹子中了4张。。。袁源中了3张。。。于是我就也有了。晚上有机器人可以玩,几个人一组,然后把机器小车调试成功之后互相顶,看谁能把谁顶翻,我没参加,打算等回来再买,还是先跟朋友们聊天要紧。几个人坐在外面沙发上聊了一会之后,来了些老外,然后气氛顿时就拘谨了,主要原因是我们这群口语都不行,只有
比较流畅,
也还行,果然大城市的人是有技能加成的……大家讨论了一会对GFW的看法,各自的平时工作时间长度,有人提了一个问题,外国女程序员多吗?大家都在坏笑,老外果断回答:Zero!!!他说中国女程序员怎么这么多啊……过了一会
来了,久仰啊,握手沾仙气。
带着老婆孩子也来了,他女儿超萌,坐在小车里睡着了,手里抱着一个可乐罐。神仙是个坏叔叔,把人家弄醒,还抢她可乐罐,居然没哭。聊了一会我回去看机器人打架了,袁源和许慧那组的机器人终于也能跑了,不过出现了奇怪的报错不知道怎么回事。打起来感觉挺好玩的,回来果断买买买。到了9点多,大家准备回去了,我提议都走回去,好好看看这个城市。然后一群人就在路边走,好热啊,好多渣土车啊,然而大家应该都很高兴,不过神仙同学不一定这么想~在路上我第一次见到榕树,长见识了。因为大家住的地方分好几个,所以逐渐就散了,等小鱼要走开的时候,我报仇了。我说,来,亲一下。他立刻像见了鬼一样逃走了,一边逃一边喊,我以后再也不黑你了。啊,报仇的感觉真好啊,要是因为这个造成了心理创伤,cc不要恨我啊,是你说在深圳期间,把他交给我的……到了宾馆,虽然一身汗,但是看到在大厅等我的
、林鸿,顿时十分激动,失误的是没有喊他们去我房间,因为,我们都不知道,这一下就聊了快三个小时,水都没有喝过啊………………关于聊的内容,不在这篇里写。第二天早上出宾馆,发现阿里两大新人女神之一的
也在这宾馆,居然是
的徒弟!【下面又开始一本正经的部分了】一、七牛前端测试实践这个主题,也算是我比较熟悉的,但我经历过的产品多半没有做到这个层面,因为两个原因,不停地变,人员严重不足,所以没有做起来。七牛能够做到这个层面,算是很认真对待自己产品的了,这个需要赞一下。我跟几个朋友也聊过前端的自动化测试,七牛用的是Angular,有朋友觉得在这种情况下,不必从UI层发起测试,而是只要把模型层和视图模型都跑通就可以了。这个顺序是对的,但我觉得仍然需要从UI层发起测试,虽然另外两层跑通就已经能说明功能正确,但模板是包含一些简单逻辑的,不从UI层发起测试,就测不到这个部分。对于这个部分的测试,也没有太好的办法,很多团队都是选择不测的,从另外个角度看,模板是模型和视图模型的配置文件,不测可能也说得过去……二、调优利器:node profiler朴大师的主题,自然是赞。这个主题讲了一些node下面调优的原理和实际操作,因为这方面经验不足,所以我也写不下什么东西来……三、p2p pipes这个老外讲了,用不同方式做点对点通讯,挺好的总结。他举的例子是石头剪刀布,原来这个东西是全世界都流行的啊?他以为中国人不知道,还详细解释了规则,不过他们不叫布,叫paper。以这个规则来讲点对点通讯真是非常合适,细节可以看他讲义,我翻了翻以前无聊用angular写的能在本机两人对下的中国象棋,突然又有了想法,邪恶地笑了……四、微服务架构下的服务通讯这个我有一部分时间在外面跟人聊,没怎么听到……不过后来看群里有句话,觉得很赞同:对于微服务来说,编排是一件比较重要的事。过一阵我可能写一篇东西,里面有跟这个相关的部分。五、前端服务化之路啊,赫门老师,你跟去年相比,体型……我听到旁边有人说:怎么请到高晓松老师啦?主题还是一如既往幽默,其中有一个前端摩尔定律,下面很多人贴了图:每隔18-24个月,前端就要难学一倍……大家手都拍疼了这个主题的论点是关于前端组件的,我在这方面有过不少言论,赫门老师大致的观点是,Web Components未必好,这个观点我很认同,讲到这里的时候,全场沉默,但中间有人鼓掌,我本来猜是hax的,后来据说是郭达峰,我也鼓掌了……这部分我的观点,我前一天晚上跟小宇他们聊过,后面可能还会再写篇东西来补充一下六、JavaScript: The World's Best Programming Language话题极其有争议,不过因为我们很早就知道内幕了,所以也不显得惊讶。贺老讲话总是很犀利,而且还专门点名赞了我一下,除了叔叔的身份外,我获得了另外一个称号:神棍,谢谢。这个也不好总结,还是直接看讲义好了。七、fibjs原理以及在孢子社区的实践fibjs这个东西我知道挺久了,用很bt的方式解决服务端js的异步编程范式,这个解决的思路相当霸气,第一次听到时候的感受,感觉只有那次听百度轻应用使用多个webview进行切换可以媲美。前年朴老师来南京,我就带他去见了响马哥(你们的辈分要叫响马叔),希望听到他们pk起来,然而并没有,可能还是因为年龄差异(我创造的老梗)这次庄恒飞讲得也挺好,有些细节我之前没关注过,现在大致明白了,然而因为我不写服务端js,对此感受不深……八、Lighting Talk环节今天的这个环节,郭达峰上去安利了一下GraphQL,挺好的。
后来上去讲他们公司(华大基因)的东西,太紧张了,比我讲东西还要紧张,会不会找个女朋友之后就能好一点?&--- kenny看这里可惜时间有限,题叶没有能讲点东西,后面再找时间去上海围观他吧九、Persistent data structure in JS land: implementing immutable frontend using react.js这个主题很好,之前我也关注过immutable,这次了解了一些细节。immutable的主要作用就是数据的不可变性,比如:var b = a.set("aaa", 1);b跟a就已经是不同的两个对象了,所以你没法去改变a自己的东西,每改一次都会出来个新东西。这样,对于数据状态的保持,会非常有用。很多在前端做绑定的框架,里面都会有变更检测,如何检测一个数组是否被修改呢?我们可能会要遍历元素进行比对,但是如果这个数据是immutable的,你只要判断两次的数组引用是否相等即可,所以会有人把这东西拖去跟angular一起用,可以大幅提高性能,不过由于angular的数据是pojo,所以immutable的数据还要再解包才能拿到界面上绑定用。参见这两篇:之前我对这个东西的主要疑惑在于:既然做了这样的复制操作,减轻了数据比对的压力,但增加了复制的代价,也增加了内存开销,这两个开销按道理并不会比数据比对小啊?讲师解释了这个东西的一些内部原理,解答了我的疑惑,原来是数据的浅拷贝,从而实现了部分未改变数据的共享,我这里不画图,讲稿里面有个图可以看得很明显,就是那个断开树枝的。我可以举个很简单的例子:var a = {};var b = {};var c = {};var arr1 = [a, b, c];这时候,如果要把arr1里面的b改变成一个新东西,它出来一个数组就是:var arr2 = [a, {}, c];这时候,arr2跟arr1是不相等的,但是内部存在a跟c这两个数据共享。大致就这意思,不需要深拷贝。听这个的时候我跟勾股坐在一起,所以一起讨论了不少东西。讲师说他觉得js还不够好,因为缺乏原生的immutable,这个我很认同。十、使用 React 构建在线 IDE 的应用实践这个是讲的实践,挺好的,这类场景是非常适合做组件化的,建议大家了解一下。十一、哎,后面两个主题没有听到,因为提前走了……【继续水】中场休息的时候,
带着小张MM来找我,叔花了很大努力,才显得像个前辈,故意作镇定状,她说你看起来还是挺年轻的……然后来了个合影,要不要贴出来呢?话说,尤雨溪也说我比他想象的年轻,你们想象我的时候,心里都是想着
的对不对……中午看到出去吃饭一身汗的勾股,坐一起听了下午的一些话题,一边听一边讨论,有不少收获。下午到4点多的时候,担心灰机来不及,许慧打了个车,我就也走了,结果完全不堵车,到了那里,还多近三个小时……居然还碰到了准备登机的尤雨溪,真是够巧……找了个地方坐下来吃晚饭,许mm推荐昨天早上她吃的三种东西,我想想是什么,好像是叉烧包,虾饺,蟹籽烧麦?其实我之前都不太吃这类东西,每天都吃炒饭的,鼓起勇气试了下还不错。吃完各种瞎聊,她去买了冰咖啡,这个咖啡喝得浑身发冷,空调又很凶悍,冻死了,而且后来回家到半夜都睡不着……到了8点我就跑了,她差不多时间的飞机延误到9点50,同情……这个过程中一直在关注微信群,发现又有人黑死马了,说他体型向着朴灵的方向发展,不久前见到他还看不出来啊,咳,我说这个干什么,最近一年多胖了10多斤,估计很快我自己也变成胖子了……下飞机的时候发现认识的好几个小伙子们也在这个航班,快降落的时候雷雨,盘旋了一会才下去的。到家时候已然12点半了,借助咖啡的力量,到了快2点才睡着,然而7点又自然醒来去上班了……总的来说,这次深js收获满满。之前投票选讲师的时候,我没有选,因为实在很难选出把哪些话题拿掉,有些讲师没有选上,我觉得挺遗憾的,比如侯振宇,比如
,比如小宇,不过也没有办法,有机会再找别的场合听吧。我还是尽量把所有分享都听完了,有老外讲师问,觉得这些分享怎样,如果可以,哪些可以去掉,这个真不好回答,我说都挺好的。现在看这些主题,有关于方法论的,有侧重实践的,有偏向纯语言的,有偏向具体框架的,还有技巧,对硬件的操作,工程管控等等,真是五花八门,我因为一直没有做服务端js方面的开发,所以有些主题听得比较茫然,争取这一年学点东西,下次参会能够领会更多东西。也有同学反馈说,英文主题不容易听懂,去年杭js的时候,我在微博上实时翻译了一些内容,今年,跟几个人一起在微信群把感觉自己明白的东西解释了一遍。明年我感觉是不是可以这样,对某些领域比较有把握的同学们,针对自己能听懂的领域一起实时播报,让其他同学大致能明白意思?还有,技术领域的英文,听懂真不难,大家可以慢慢试试,虽然我口语很糟糕,但听东西还凑合,主要靠认识词。最后,来个跟小萌妹的合影,照片不太清晰,因为是寸志拍的,原图在他那,从微信收到的只有一点点大……另外重点声明:两个人都不上照,尤其是
同学,真人比照片好看100倍12149 条评论分享收藏感谢收起coding.net的贴纸不错.WebGL和WebVR的分享, 没细听, 好像挺好玩的, 不过感觉离应用还很遥远.最后是死马的分享, 临上台一刻他还坐在我的旁边修改PPT... 感觉他的身材更靠近朴灵了.最后一次抽奖, 获得 完美避开所有抽奖 的成就.拍合照闪人PS1: 这几天那个微信群真够疯狂的... 一堆招人的在里面发红包, 我没抢到几个... 错失了几亿的感觉. 现在300多人了, 这几天起码发了上万条消息.... crazy.PS2: 第二天又打了两次快车, 居然都是妹纸司机, 其中一个还居然是第一次.PS3: 这次的议程安排有问题, 应该 toa() vs koa() ,
hax + 朴灵 vs fib5128 条评论分享收藏感谢收起博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)粗大事了:花两天时间学习了 Go 语言,发现比 Node.js 高不知多少去了
16:19:20 +08:00 · 35969 次点击
先说感受到的先进性:
语法非常简洁,有种在学 C 语言的感觉,学习过程觉得很轻松,没有太陡峭的曲线,但语言也完全够用
自带工具就非常强大,而且各 IDE 和 Editor 都能集成,开发工具完全不是问题
go get = git clone + go install ,从 github 上直接 clone 下源码,编译出 .a 包文件和安装 bin 到 $GOPATH ,就可以本地任意地方使用了。反观 npm ,相信很多人不知道 NODE_PATH 的存在。
gofmt 代码风格统一,码农们再也不用为空格与 Tab 争吵了
go test 支持 benchmarks 和覆盖率测试
godoc 查看文档的工具。支持本地执行 godoc -http=:8080 后就能在浏览器中访问
的本地 copy 版,对被墙的同学是个不错的选择
支持 Github ( Gitlab 等也可以)远程包,不需要发布到类似 npm 那样的地方
并发用协程和 channel 非常容易写,业务逻辑中可以尽量避免回调
部署非常简单,可以运行二进制文件,也可以通过 go get 来安装 bin ,运维起来非常方便
API 稳定,据说从发布到现在语法基本没变,只是 Go 内部做了改进和优化
本人还用 Swift 写过 iOS ,发现 Swift 似乎是从 Go 身上学了不少东西。。
G...FF..WWW ,想下个 pkg 安装文件非常困难,最后是通过 brew 下载的
国内资料少(这么简单的语言,似乎也不需要什么资料)
社区小不如 npm ,国内想找个工作更是困难
不确定性:
性能与 Java 比如何,相当于什么水平
综上所述,感觉 Go 确实是一个目前比较理想的开发工具,大家一起讨论讨论,人生苦短,为何不用 go ?
第 1 条附言 &·&
23:25:43 +08:00
楼几度歪了,强调下,楼主初衷只是想讨论一下在服务端开发领域 Go 是不是比 Node.js 更合适的工具。。
不要歪楼提 Node.js 在 Atom 等客户端开发上的建树,更不要乱扣帽子说楼主是在指点江山。。
可以说说 Node.js 和 Go 互相都好在哪里, Go 到底是不是比 Node.js 更好的选择。。
197 回复 &| &直到
16:10:54 +08:00
& & 21:12:51 +08:00
@ 你说得很对啊 我需要你的观点
& & 21:14:13 +08:00
@ 你说得对啊 我是想听听你的观点
& & 22:19:20 +08:00
说了半天没说 goroutine 是什么情况
& & 22:29:31 +08:00
@ 我就拿 python 写过个三千万日 pv 的。顺便,关于所谓的 callback 我给你科普一下。
& & 22:35:35 +08:00
用不着你科普 我用 node.js 写过日 pv 八千万的网站。。绝逼不是吹牛
虽然如此我仍觉得 node.js 的 callback 和 go 的 goroutine + channel 一比就是一坨翔。。而且 go 也支持 callback , callback 这货用来做界面编程还行,用来做并发真不如
goroutine + channel
& & 22:38:53 +08:00
@ 可以自己去看啊。。改天我撸个典型的场景 看看 async.js 、 co 、 promise 和 go 的各自实现
& & 22:41:59 +08:00
又来整个大新闻,把 node.js 给批判一番?
& & 22:43:37 +08:00
不明白为什么有人抱着 callback 当宝不放,不看看外面的世界,这么抵触新的知识和观点。。。 async.js 、 co2.0 、 co 4.0 、 Promise 的存在,不都是为了解决 node callback 在并发业务逻辑处理上的表现力问题吗
& & 22:51:25 +08:00
Go 真心是不错的,学习成本很低,性能只能说碉堡。。。唯一不爽的就是 if err != nil
& & 22:58:47 +08:00
Node.js 从来都不是拼语言,我们是拼的生态环境, js 使用者数量大而已
& & 23:08:12 +08:00
go 还不支持泛型
C++、 C#、 JAVA 都支持泛型,新出的其他编程语言也都支持泛型,,就 Go 不支持
& & 23:08:55 +08:00
貌似楼主初衷只是想讨论一下服务端领域的 Go 和 Node.js 的应用,怎么就干上了……
建立楼主 Append 说明下吧 @
& & 23:13:41 +08:00
@ 说得对,但从语言、工程化角度来看,不知道 Go 是不是一个更好的替代方案
& & 23:22:07 +08:00
呵呵呵, callback 是啥?再说一遍?不懂就不懂,还找借口
& & 23:25:43 +08:00
等等。。满屏幕的 callback 是 nodejs 的优雅么。。我记得好像之前还有人在喷 nodejs 回调一多, stackprint 就不完整。。
& & 23:34:08 +08:00 via iPhone
没人黑 Go 没有很好支持范型这点很烦么……还有不能函数重载也是醉了
& & 23:37:13 +08:00
你是不是觉得就你牛逼就你懂 callback ? koa 为什么要先后用 yield 和 await 来替代 callback 问题?就是因为复杂的业务逻辑是不适合用 callback 来表达,也不利于调试,所以用 yield 和 await 显著改善了异步代码的开发和调试难度。
goroutine 和 channel 是啥懂不懂?也建议你看看,开喷前请提高姿势水平,不要为了喷而喷。
& & 23:39:11 +08:00
C 语言简洁,装的飞起.(*(void)(*)( ) )0)( )求告知
& & 23:39:43 +08:00
@ 看来哥真的是来给你指点江山的,不谢哈
& & 23:41:21 +08:00
辣鸡 npm
go 无中心的包管理不会导致 npm 的 left-pad 事件(滑稽
& & 23:44:52 +08:00
@ 就语法而言, C 语言之父 Dennis 编写的《 C 程序设计语言》就讲完了,就很薄的一本书。语法简洁不代表代码就没有复杂度,同理 lisp 。
& & 23:51:13 +08:00
@ Pascal 还 35 页呢,再说了**&&The C Programming Language&&**又不是初学者看的.书薄不代表语言简洁.
& & 23:52:08 +08:00
@ 某些 node 社区的人哪里知道什么泛型,就信仰 callback 是宇宙无敌黑科技,听不得别人黑 node ,见不得别人有不同观点。。我日常工作就是搞 node 的,拿 go 出来与 node 比较一下,就被喷成不懂 callback 和装了,呵呵
& & 23:57:02 +08:00
恭喜 lz 脱离苦海。动态一时爽,重构火葬场。
& & 00:01:27 +08:00
@ C 语言语法简洁全世界公认,就你不这么想,你是故意抬杠还是智商捉急呢?
& & 00:02:55 +08:00
@ node.js 也正在往静态上靠呢 服务端开发太需要静态了
& & 00:04:42 +08:00
世界公认,给个链接看看?
说两句就人身攻击了,真是智商捉急
& & 00:05:49 +08:00
呵呵,傻 x
& & 00:08:26 +08:00
@ 不送 自以为牛逼的 2B
& & 00:10:07 +08:00
@ 我先人参攻击?谁一上来不分青红皂白地说别人装呢?哥装用得着你说?你是 @ 猴子派来的逗逼吧,两人一副德行
& & 00:12:00 +08:00
@ 给个维基的链接什么意思哦?ctrl+F &简洁&到一个结果,还是说 goto 的
& & 00:17:56 +08:00
@ 自己 google 介绍的一大堆
& & 00:19:51 +08:00
go lang =够烂
在宇宙第一语言 php 之前什么都是渣
(java 属于信仰问题 不在讨论范畴内)
& & 00:24:29 +08:00
@ 就喜欢这种喷子 不喜欢某些一上来不喷事先喷人的人 @ @
& & 00:49:22 +08:00
@ 抱歉,为啥要 at
我……
我只是不明真相的吃瓜群众……
& & 00:54:47 +08:00
@ sorry ,俺错了,你只是碰巧和大喷子 @ 一样,名字都是 b 开头。。
& & 00:58:46 +08:00
@ 哇靠吓死了, V 站撕逼请务必不要叫上我……
& & 02:02:30 +08:00
LZ 你这是要搞出个大新闻啊
& & 03:51:16 +08:00
楼主支持你,新东西需要敞开胸怀去接受
& & 04:38:44 +08:00
热闹,占座。
& & 07:11:11 +08:00
夭寿啦,学了两天的 Go 粉来 V 站炸鱼啦!
请完整写过 1000 行以上的项目再来夸吧, Go 也就算个新时代的 C ,以及 goroutine 不错,其他方面也许还不如 Java 、 C#
& & 08:39:28 +08:00 via Android
观战
王大神把 go 批判的一无是处
& & 08:57:33 +08:00 via iPad
?给你说几点:
defer,panic 什么鬼。
莫名其妙实现了接口什么鬼,明明静态类型弄的像 duck type 。
n:=struct{}是什么东西。。为什么有的要&struct{}。
map[string]string 是什么?为什么我自己用不了这个语法。
我靠经验尝试用&string&.Replace ,呃,好吧,还要用 string.Replace 这个库函数。。不 oo 那就算咯。
?那么,有什么理由让我们使用 super c 呢?对了, channel 的实现不需要锁?
& & 09:07:40 +08:00
go 有反射就够了……
& & 09:24:22 +08:00
嗯,火药味越来越重,撕逼已到高潮,是不是准备开打了?!
& & 09:34:34 +08:00
@ (*(void)(*)( ) )0)( ),(void)(*)()无返回类型的指向函数的指针 1 ?(*(void)(*)( ) )
*是指向前面那块东西的指针 2 ? (*(void)(*)( ) )0) 默认值是 0 ? 最后那个 () 函数调用?
& & 09:40:12 +08:00
@ 计算机启动时,硬件调用首地址为 0 位置的子例程.
& & 09:41:01 +08:00
@ 也有一大堆 .
& & 09:50:48 +08:00
一些人真是太狭隘了,语言还不是拿来用的
& & 10:19:16 +08:00
私以为楼主如果真想讨论,何必取个这样的标题。
& & 10:19:46 +08:00
你们吵架好厉害,我还是静静的学 F#/C#/Typesciprt
& & 10:30:09 +08:00
我学 ASP 的时候 你们说 PHP 不知道牛逼到哪里去了
我学 PHP 的时候 你们说 PYTHON 不知道牛逼到哪里去了
我学 PYTHON 的时候 你们说 NODE.JS 不知道牛逼到哪里去了
我学 NODEJS 的时候 你们又说 GO 不知道牛逼到哪里去了
& & 10:36:01 +08:00
不出意料 lz 被喷了,战斗很激烈啊,过来支援下 lz
大于 5k 行代码动态语言在生产环境下用都是很坑的。不要拿那些已经用了的项目来说事儿,都是历史问题,一开始能用静态就用静态,用那些傻 x 的不会让人犯错的语言( go/java/c#)。
js 之所以流行也是历史问题,前端只能用它( webassembly 快来拯救世界吧)
nodejs 这种看似炫酷但实际坑多的东西就是要吐槽下才好,话说你们真的用它搞过大项目吗,搞过的摸着良心问问自己它坑是不是多, Promise 写起来烦不烦, await 忘记打了返回的结果就完全变了有没有,重构的时候痛苦不痛苦,一不小心就拼错,是不是特别依赖单元测试和回归测试。多人一起搞总有人很容易搞错,那些看着傻 x 的语言的最大优点体现在团队合作上,首先不犯错就是牛逼,其他的事情可以先靠边放。 G 家大量使用 java ,甚至用 java 来生成 js 代码, fb 家的 php 已经是带类型的了。
如果觉得 callback 很牛逼,写多几行你就知道咋回事儿了, callback 只是最原始暴力的机制,再写多几行就会发现 go 的那套的好处以及它考虑的深远程度,是加强版的 promise 和 async/await 。 nodejs 性能倒是还行,主要是由于 libuv 和 v8 ,跟它本身没啥关系。然而单线程模型还是被 goroutine 完爆,就算单线程性能比得上 go 也没用。部署的时候 npm 装一坨就不说了, go 完爆。
没大项目经历的人很容易被坑,一开始搭完一个 prototype 很兴奋,最后干了半天你发现,动态语言压根没有给你节省时间精力,前面节省的时间都被后面坑回来了,再次更换技术选型已经来不及只能继续被坑,换 ts 或者 flowtype 可以缓解,同理 python/lua 基本都是一个情况。
& & 10:39:33 +08:00 via iPhone
求楼主这个 css
& & 10:40:29 +08:00
defer 有什么不好的吗?具体说说。它类似 RAII 但有所不同。有人用 defer 模拟过延迟计算的特性,实现过一个定时器,这东西有可取之处。
panic 的使用原则就是“不 panic 就尽量不要使用 panic ,但它是个 panic 的时候,要尽早 panic ”。 erlang 里面也有类似的箴言,“尽早的出错”,等拖到后面一个都捕获不到,服务器挂了后抓瞎,不知道原因在哪里。
n:=struct{}就是一个初始化声明,有了&struct{},基本上就用不到“ new ”这个关键字了, n 以后说不定会删掉 new 。 java 里面一堆的 new ,很恶心的,现在新设计的很多语言都是没有 new 的。如果你搞 reactive 风格的编程, new 的恶心程度堪比 call back hell ;
map[string]string 就是 map&string,string&,前者是扁平形的,后者是嵌套的,你多嵌套几层,从可读性上你会发现前面的写法还是有可取之处的。另外就是省了个尖括号, Go 是能省就省。比如很多语言的 list 使用&[&,
&]&来表示,而 Go 里面 struct , map , slice 统统用&{ & , &}&。
&string&.Replace ?那你是不是还想要 Int.xxx ,这典型的一切皆 OO 风格。 Go 当初定位是系统编程语言,它不如 c/c++那么底层,但又比 java 底层一些,比 python/ruby/js/php 这些动态语言来说,代码书写的自由度上肯定不能比,但天下没有免费的午餐。 Go 一切是按值传递而非引用(slice 实际上不能说是引用类型, Go 里面没有引用的说法。传递的是指针的值)。那么为何要保留指针?为何不那么 OO ?其实都是一种折衷的选择。因为它当初的定位是系统编程,性能和开销需要有个限度。例子: java 9 或者 10 要实现的 value type 就是这个情况的最好说明。
@
楼主列举的优点是从实战的角度去谈,说的很客观。实际上 Go 的安利文基本上都属于这种。你见过哪篇 Go 的安利文是“ Go xxx 特性多么牛”,“ Go 又实现了个性特性,能 XXX ”.......
没有,一个也没有。
说 Go 好的基本都是从工程化,项目的角度去谈,比如它的标准库很不错,部署很方便,编译快开发效率高有种使用动态语言的感觉,写并发变得简单了些等等。但很多人却不从这个角度去谈,而是专挑语言本身的问题。语法怎么怎么地?没有 xxx 特性,你看看谁谁谁写的文章大骂 Go 是垃圾等等等,这些东西站的角度不同,看到的结果自然会不同。 Go 优缺点并存,你看不到它好的只看到缺点,更是用都没用过,那还能说出什么有意义的东西出来。比如上面有人不断提到“ Go 没有泛型”,这是不是个问题?当然是。但楼主的这个贴,以及所引用的场景,写 10 万行代码都不会有一次要用到泛型的。再就是包管理的问题, Go 做的很差。这个可以展开说,尽情吐槽,有理有据都成。但 Go 的包管理一定不会做成 npm 以及 Rust 的 Cargo 那样的。为何 Go 一开始没有包管理?因为 google 内部自己就从来不用这玩意儿,所以 Go 的开发者也就没有搞这些。实际上 1.5 , 1.6 包管理的进展到实现大部分都是 Go 社区那些人搞的(比如 vendor 那个具体方案就是非 google 的人提出的被采纳了)。
最后,心态都开放一点, Go 不能完全取代 node(至少在 web 开发这一块, Go 没有机会。服务端 Go 很擅长),不用这么怕,充满火药味,它们都是工具,让你的生活变得简单些。这里有个 2 年前的 Go 和 Ruby 的撕 b 贴,很长但没有那么浓的火药味,回帖质量挺高的(
转一段 The Little Go Book 上的一段话,看看 Go 与 ruby,python , c/c++/java 间的关系, Go 目前到底适用用来做些什么事情。
Go was built as a system language (e.g., operating systems, device drivers) and thus aimed at C and C++ developers.
According to the Go team, and which is certainly true of me, application developers, not system developers, have
become the primary Go users. Why? I can ’ t speak authoritatively for system developers, but for those of us building
websites, services, desktop applications and the like, it partially comes down to the emerging need for a class of
systems that sit somewhere in between low-level system applications and higher-level applications.
Maybe it ’ s a messaging, caching, computational-heavy data analysis, command line interface, logging or monitoring.
I don ’ t know what label to give it, but over the course of my career, as systems continue to grow in complexity
and as concurrency frequently measures in the tens of thousands, there ’ s clearly been a growing need for custom
infrastructure-type systems. You can build such systems with Ruby or Python or something else (and many people
do), but these types of systems can benefit from a more rigid type system and greater performance. Similarly, you
can use Go to build websites (and many people do), but I still prefer, by a wide margin, the expressiveness of Node or
Ruby for such systems.
There are other areas where Go excels. For example, there are no dependencies when running a compiled Go program.You don ’ t have to worry if your users have Ruby or the JVM installed, and if so, what version. For this reason, Go is becoming increasingly popular as a language for command-line interface programs and other types of utility programs you need to distribute (e.g., a log collector).
& & 11:06:10 +08:00
@ 说 C 的 语法 简洁,没问题啊
& & 11:20:41 +08:00
每次看到动态语言项目不能大于 5k 行言论就感到莫名的喜感,
开发者的结构能力, 设计能力到哪里去了, 没有编译型语言的支持, 连大于 5k 行的项目都做不了, 真真是可笑的很.
& & 11:32:25 +08:00
不觉得你这个标题是来好好讨论的标题
& & 11:33:43 +08:00 via iPad
果然这种帖子最火。。。
& & 11:37:35 +08:00
要我再做一次选择,我应该不会选 nodejs 来做项目了,折腾过得出来的经验。
& & 11:39:10 +08:00
@ 硬要写当然能写,但时间精力耗费怎么算
& & 11:44:11 +08:00
@ 写问题不大,最麻烦的是重构。
& & 11:45:03 +08:00
哦。。第一次我刚刚是想说 if err!=nil 的。。怎么写了个 defer 。。 defer 是个挺有意思的设计,虽然很有可能被到处用。不过 defer 和 RAII 没什么联系吧? defer 充当一个 func 的&析构&可以理解。
说 new 的我觉得有点莫名其妙。很多语言省略了书写不代表否认了 new 的过程。另外我问的是 a:=struct_name{}和 b:=&struct_name{}有什么实际意义上的区别,为什么要这么设计
map[string]string 这里就更奇怪了。我问的是为什么标准库的 map 可以用这样的语法,我自己却不能在我的 UserDefined 里提供这样的语法。这是为什么?
最后呢。。又是常见的问题啦,什么是系统编程语言,和 OO 有矛盾么,你前面说的 new 那部分又是什么呢, Reader.Size()又是什么语法呢?
一个语言的一致性是很重要的。
& & 11:53:59 +08:00 via iPhone
@ 说的挺好。
不过 The Go Programming Language 里面说 slice 、 map 都是 reference type 啊
& & 11:55:52 +08:00
第一次看到 Node.js 节点的帖子上热门榜 hhhhh
我又回来了,关于服务端领域的,我认为 Go 还是比不上 Node , Go 其实本身就已经在走下坡路了,发展速度还不如 JS 的一个分支语言 TypeScript ,就只是因为靠 Docker 续了一命,让这个「语法糟糕,代码丑陋」(主观)的语言重新被人们所重视了…
但是我还是认为 Go 还是会继续不温不火慢慢萎靡下去, Go 我感觉很多人更是拿它当做脚本语言在用…和 Go 并肩的项目一般都是 Python 、 Node 之类的语言, Go 想要蚕食这份市场是不可能的,毕竟 Go 本身的 Native 属性在服务端开发领域的 Debuff 让它有一定的学习门槛, Godoc 之类看起来很不错的功能,仅仅是看起来不错而已,真正用起来会发现「这特么是什么二比设计」…甚至有的库作者认为有了 Godoc 就可以不用写文档了,突然想起来前阵子有一群人批判 JavaScript 程序员这样子那样子,现在想想,真的是呵呵呵呵。
& & 12:00:02 +08:00 via iPhone
Go 就是缺少好用的 ORM...
& & 12:10:04 +08:00
你们可以说动态语言(我这里主要指 python)做大项目需要对程序员有较高的能力. 因为 python 之类的, 如果不用 django 这样的框架的话,
其项目架构其实是没有强制要求. 这就要求开发者较好的架构能力. 但不能说不能写大于 5k 行的代码, 我这里就不拿我自己的项目举例子了.
好的软件就是东西应该在他本来所在的位置, 做到了这点,就能快速定位并解决, 这同语言无关, 同程序的结构组织有关系, 说白了同开发者有关. 当然, java 通过一些框架和模式了强制开发者去遵守这点, 在用动态语言开发时, 语言和框架通常没有约束, 但不能说开发者会不运用这种能力. 说白了, 用动态语言就会写出不能维护的程序的程序员,本身就是上不了台面的.
其次, 重构, 说白了就是查找替换,
没有工具就不能重构这话肯定不对
动态语言的确会有打错变量名的情况出现, 但这些都是冒烟测试可能解决的, 即运行一下测试程序都能暴露出来的,
其次上大部分问题 linter 程序都能自动识别的. 最头疼的错误是逻辑或误写变量之类的导致数据错误, 这类, 动态语言和编译型语言都必须靠测试解决. 编译型语言没有优势
另外, 我觉得同动态语言不能上 5k 的人沟通实际是有问题, 这不是攻击,是你们对工具依赖的太重, 无法信任人本身的自制和能力, 这两种思维估计很难协调一致.
& & 12:14:13 +08:00
翻完了,我大 ruby 木有参战
& & 12:17:45 +08:00
路过,围观。 php 是最好的语言!
& & 12:27:56 +08:00
& & 12:42:50 +08:00
@ 可以用来释放资源的(所以说它和 RAII 有相似的地方)。比如打开文件后面要关闭文件。
:= struct{}和:= &struct{}, 一个是值拷贝一个是指针拷贝(如果你觉得拗口,就暂时按引用类型理解, slice , map 这些都可以这么理解),因为有的 struct 可能会非常大,所以为了减少开销,返回一个指针(或者就叫引用吧)。
n := &struct{}和 n := new(struct)是一样的。
的确,省略 new 没省略这个过程,但代码的可读性和连贯性上会大打折扣。 reactive 风格的编程更靠近 FP 语言,在这点上,其实 javascript 比 java 做的要好(JS 比 java 更 FP 一点)。我有个大胆的猜想(java 某一天也会去掉 new ?)
user definded 类型确实不支持,其实这就是不支持泛型的问题。
一切皆 OO 的语言几乎都没有指针,而且默认是按引用传递,而系统编程语言比如(c/c++,算半个系统编程语言的 Go)都是按值传递多一点。这也就造成了很多的不同。比如你可以&string&.Replace , python 里面你可以直接各种精度的整数相加,因为这些都是一个 int 对象,而不是具体的值类型,是有抽象在里面的。不能说说谁好谁坏,根据不同的使用场景各有自己的优劣,比如做 application 层面的开发, OO 这种引用类型的使用的多一些,而系统编程语言后者多一些,为了性能以及内存开销低一些,比如游戏开发里面甚至会有专门的值类型,比如支持 SIMD 数值类型。
Reader 是一个接口, size()是实现了 Reader 接口的一个方法。 Go 的接口是非侵入式的,组合起来非常自由,但也有很多人吐槽的,不知道谁实现了谁的问题。
@ 非要按照引用类型的本义去理解(比如 c++里的那种),那么 Go 是没有引用类型的,只是 js/python/ruby/java/php 的程序员都不使用指针,都习惯了引用类型,所以 Go 的 map , slice 那些叫引用类型也成。
但 Go 是按值传递,这点和它们有很大的不同,和 c++更接近。比如 c#是两者都支持(有 struct),但却更接近 java/python 。。。这些。
Go 是续命还是萎靡我不做预测,但拿语法丑陋,缺少一大堆特性来说事,我只能说:你到现在还没搞懂: Go 为何会有人在用它。而这篇文章的作者显然是给出了用 Go 的比较靠谱的理由。
docker 再火其实对 Go 本身影响不大,因为大家都在用 docker(各种语言都支持),而不是用 Go 语言其重写一个又一个新的 docker 。而 Go 自身真正吸引一部分人去用它编程的,不是 docker ,而是服务端开发。
最后: Go 现阶段不要盲目的入坑(写些自己的小项目,小工具除外), Go 其实不太适合新手。 Go 作出的一些语法特性上的牺牲和一些妥协只有在工程上,具体项目上能体会到,撞了墙之后才能有深刻体会。不要被 Go 的语法简洁,上手快等等特点给误导。也就是说:不用只看其一面。
希望这不是引战贴,而是解惑贴,各取所需就行了。
& & 12:47:55 +08:00
@ 我没说不能,我只说很麻烦。工具让人变懒是好事,希望有更多这样的工具出现,其实包管理的问题也可以,也应该给通过工具去解决,这种脏活,累活本身就是计算机发明出来该替人做的事,不应该把人的精力和兴趣耗在这些琐碎的事情上。
很高兴的看到,这几年无论是动态语言还是前端,也开始重视静态类型以及工具的作用了。
& & 15:05:13 +08:00
用 Go 语言有一段时间了,想说说自己对这门语言的感受。
个人感觉用 Go 最大的好处是包管理、测试、部署、代码组织、代码格式化这些杂七杂八的活儿都被同一套规范暴力而又统一地解决了。这样,程序员可以更侧重于去处理代码逻辑,而不是去操心代码怎么缩进这类细枝末节。另外 Go 的那一套标准库、编译速度以及低学习成本也是它的优势。
Go 的坑主要集中在语言本身对一些机制缺乏支持上,比如泛型,官方自己也承认这一点。还有一些功能在设计的时候也比较欠考虑,比如前面 V 友提到的包管理的版本问题。为了弥补这些问题, Go 后续又搞出了 vendor 、 generate 这些功能很有限的机制。它们虽然能用,但是明显满足不了人们的期待。
目前我主要用 Go 写一些跑在 Linux 服务器上的工具,所以上面这些坑对我来说一般也遇不到,算下来我觉得多学这么一门语言还是非常值得的。
& & 15:05:17 +08:00
感谢,正面解释了 Go 的很多细节,比我高得不知道多少去了。
@ 动态类型和并发编程是 node.js 服务端编程上一直存在的短板,所以才一直在改善,有了 ES6 ,有了 TypeScript ;开发框架也从 express.js 到 koa ,异步编程工具从 async.js 到 co 再到 Promise ,都是为了解决这些问题。
包管理 npm2 到 npm3 也发生了巨大变化,也是为了解决多版本管理的问题。
写过三年的 node.js 服务端代码,所以在看到 Go 的时候,难免会这么想:如果一开始就用 Go 来写,是不是就可以避开 node.js 服务端编程中那些不成熟的坑,不用频繁地切换框架、工具,不用改变编程习惯,不用频繁重构,更高效地编程,把时间完全投入到业务逻辑上而不用各种入坑填坑。
毫无疑问 node.js 生态还是屌屌的,工作中仍会继续使用,也相信坑总有一天坑会填完;也会在个人项目中开始尝试 Go ,体会一下另一种坑的滋味。
& & 15:09:29 +08:00
并不喜欢 Go 但是 rust 很不错的样子
& & 15:31:34 +08:00 via iPhone
@ 在理,动态语言在大规模项目开发容易,多个版本迭代下来,维护起来好麻烦的
& & 15:53:20 +08:00
Golang 跟 node.js 的应用场景没多少交集,根本不能直接比较。就拿 Golang 的那些开源项目来看, group cache/docker/Kubernetes/tidb ,这些项目该怎么用 js 来写?语法特性是否优美丰富从来就不是 Golang 的卖点,它最大的卖点是简单没有复杂的语法特性甚至还强迫你们大括号要换行私有变量名要小写,杜绝了各种奇怪难懂的写法,加上丰富易用的工具链,是一种只为实际工程开发做了很多妥协的语言。国内也有不是公司用 Golang 做过线上的服务,比如七牛和领英的赤兔整个后台都是 Golang 写的, bat 也有部分组用 golang 做了不少轻量级的服务,我之前的公司甚至还用 Golang 做了一个类淘宝 TFS 的分布式小文件服务系统和类 hbase 的分布式存储系统。国外 FLAG 乃至 uber/airbnb 都有不少系统是用 Golang 开发的。
另外当年 C/C++在 linux 网络编程里面经常被人垢病的一点就是 linux 多线程性能不高,只能单线程 epoll 配合状态机或者 callback 来写网络服务,导致逻辑支离破碎难以调试,所以 node.js 的 callback 在现在来看是一种倒退。
& & 16:19:31 +08:00
@ 不是说 Go 坑,欢迎入坑,是欢迎加入 Gopher 的队列,哈哈
& & 17:51:16 +08:00
@ 为什么你可以举着 C++的例子把他放到不 OO 那里了啊。。。而且不能++--的指针有什么用=-=
& & 20:15:21 +08:00
java 程序员默默飘过,全程围观 :)
& & 20:23:48 +08:00
golang 的包管理思路是对的, 如果这种大量引用别人类库的东西,就应该作者负责编译出一个可执行的版本,而不是用户去负责。 我拿到一个程序,一运行 需要 200 个依赖包?有些包还找不到? 动态库带来的问题真的很复杂,它解决了大小的问题,带来了更多的麻烦。
& & 10:26:21 +08:00
哈哈,成也 callback ,败也 callback 。
以后用 ts 就可以解决类型问题,用 async/await 就可以去掉 callback ,什么?不够优雅?...
& & 10:30:52 +08:00
我只是静静的看着你们撕逼
& & 11:13:17 +08:00
一定是跟女朋友打赌了,所以才发了这个帖子!
& & 11:39:02 +08:00 via Android
好可以去学习
& & 11:39:46 +08:00 via Android
好可以去学
& & 14:26:49 +08:00
民科!都是民科!--王垠
& & 16:07:18 +08:00
话说..上面那些说 npm 是中心的...要搞清楚 npmjs 和 npm 之间的关系啊...
npm 是可以直接挂 github 地址的....或者某个路径...完全可以去中心化....
& & 16:37:18 +08:00
各有各的好吧。
& & 09:10:16 +08:00
不同系统,适用的语言也各有优势嘛
& & 20:28:20 +08:00
Node.js 玩家, go 写的少,尝试去实现 go-co , see
有一些见解
1. 没有范型,很不爽。
2. defer panic recover, 其实跟 try catch throw 是一样的,换了个说法,而且 defer 必须先写,想当于 finally 部分最先写。
& & 20:32:20 +08:00
返回值写了 interface{}, 如果确实没有返回值,必须显示 return nil
& & 09:24:51 +08:00
go 最大的问题,下载下来的包,,不能区分版本
& & 01:59:13 +08:00
@ 用 glide 就可以啦
& & 21:40:57 +08:00
golang 能开发什么?不会是像 pyton 强大的语言?
& & 13:50:24 +08:00
你听说过 uvloop 么
& &29 天前
现在是 async await 的时代了 逃...
& · & 2924 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 22ms · UTC 07:33 · PVG 15:33 · LAX 00:33 · JFK 03:33? Do have faith in what you're doing.

我要回帖

更多关于 js获取鼠标所在的元素 的文章

 

随机推荐