当前位置: 首页 > news >正文

品牌微信网站开发资源网站优化排名网站

品牌微信网站开发,资源网站优化排名网站,互助盘网站建设,网站界面建议写在前面 学习一个东西的一种很好的方法#xff0c;就是去了解这个东西的历史。在我们学习 Go 的过程中#xff0c;同样也可以去了解下在 Go 之前的一些事情。 内容 Rob Pike 是 Go 语言的作者之一#xff0c;早年他在贝尔实验室工作#xff0c;也是 Unix 团队的成员。 …写在前面 学习一个东西的一种很好的方法就是去了解这个东西的历史。在我们学习 Go 的过程中同样也可以去了解下在 Go 之前的一些事情。 内容 Rob Pike 是 Go 语言的作者之一早年他在贝尔实验室工作也是 Unix 团队的成员。 Go 里的很多思想来源于他在之前开发过的一门用于关注输入设备交互的语言叫 Squeak后来还发展出了 Newsqueak. 一个小插曲正如前面所说Squeak 是一门关注输入设备交互的语言例如鼠标这些而 Squeak 这个词在英文里是吱吱叫的意思就是老鼠的叫声 所以我们有必要了解一下 Newsqueak 的一些设计。 Newsqueak 一般在并发问题上程序员时常要关注线程、锁、信号量、共享内存等概念但这从程序员进行简易编程的角度来说还是难度比较高层次还是比较低我们需要一种属于高层次、屏蔽更多内容的东西。而 Newsqueak 就是用来解决并发问题同时又希望能简单些的开发语言。 我们看一下 Newsqueak 的一些代码 变量 hello: array of char hello;i : 23 24;b : mk(array[2] of array of char {s , go});在上面的变量定义和初始化的例子里是不是就开始看到 Go 的雏形了 函数 prog 是个关键字 rec ack : prog(a , b: int) of int {if (a 0)become b1;if (b 0)become ack(a-1, 1);become ack(a-1, ack(a, b-1)); };ack(3, 4) #调用它在这里become 可以简单理解为 return。 定义了函数后我们可以把它当做一个值来使用 sum : prog(a, b: int) of int {become a b; }difference : prog(a, b: int) of int {become a - b; }sum difference; #这里只是一个例子但实际这样用肯定是很奇怪的# 下面这两种结果是一样的 a : sum(24, 23);a : prog(a, b: int) of int {become a b; }(24, 23);接下来我们把函数当做一个程序来运行 begin sum(23, 5);begin prog(a, b: int) {for(; a 0; a a-1)print(b); }(10, sum(23, 5)); # 这段代码会在后台进行打印这里的 begin 就像 Go 里的 go 了。 channel c : chan of int; # 声明 c mk(chan of int); # 初始化c - 23; # 发送 x - c; # 接收Newsqueak 里认为这个通信过程是同步的 发送者会被阻塞直到有接收者接收者会被阻塞直到有发送者如果两者都准备好了那么值就会被传递 想要异步的话可以这样 begin prog(c: chan of int, a: int) {c - a; }(ch, v)在 Newsqueak 里channel 有以下几点 它们应该被用来处理所有的通信问题 这样可以避免共享内存将数据和信号做关联 它们应该像文件描述符一样而不是文件也就是我们拿到了这个句柄就可以操作它做一些事情它是 first-class values (不知道怎么翻译) 大致意思就是可以像其它基本数据类型一样处理的值也就是 channel 可以作为函数的参数、返回值、数据结构里的参数等。 与 channel 搭配的还有一个叫 select 的东西 c1, c2: chan of int; i: int;select {case i -c1:print(A:, i);case i -c2:print(B:, i);case i -c1:print(C:, i);case i -c2:print(D:, i);case c2 - 7:print(S); }括号里的东西会一直阻塞直到有一个 case 处理了内容。如果有多个 case 可以处理就随机一个。 下面是一个 channel 使用的简单例子 counter : prog(c: chan of int) {i : 1;for (;;)c - (i i 1); };c : mk(chan of int); begin counter(c);-c; 2 #打印 -c; 3 #打印因为 Newsqueak 是用于处理交互设备的我们看下在一个窗口系统里客户端大概会使用 channel 来做怎样的定义 type Env: struct of {G: chan of graphics; #图形命令M: chan of Mouse; #鼠标K: chan of int; #键盘 };type Client: prog(env: Env);参考 Unix 传奇历史与回忆 Advanced Topics in Programming Languages: Concurrency/message passing Newsqueak Newsqueak: A Language for Communicating with Mice
http://www.hkea.cn/news/14355962/

相关文章:

  • 营销型网站建设电话一个人可以做网站吗
  • 可以做app的网站仿站怎么做
  • 外网有哪些有趣的网站深圳网站建设公司哪家可以建app
  • 南通优普网站建设深圳市中心在哪个位置
  • 网站平台建设规划wordpress tw
  • 百度建网站要多少钱工业设计灵感网站
  • 小程序是什么沧州seo排名
  • 百度网站建设目标自己做网站卖货多少钱
  • 手机网站开发介绍室内设计效果图平面图
  • 网站编程培训机构排名前十常见的cms系统
  • php按步骤做网站互联网公司的最新排名
  • 网站数据统计工具怎样做论坛网站
  • 上饶专业的企业网站开发公司番禺网站建设三杰科技
  • 公司网站能否申请国外免费空间网站与域名的关系
  • 做企业网站需要买什么优化模型的推广
  • 重庆哪里做网站网络营销相关理论
  • 四字母net做网站怎么样网站备案要幕布
  • 企业网站功能怎么设计wordpress4.6.9
  • 直播做ppt的网站有哪些沈阳红方城网站建设
  • 深圳企业建网站公司网站建设个人工作室
  • 用织梦做领券网站怎么用织梦做网站后台
  • 网站重定向怎么做万江做网站的公司
  • 企业建站用什么软件厦门海沧区建设局网站
  • 上饶建站公司静态网站建设平台
  • 网站建设公司哪家比较好建设一个网站需要什么技术
  • 个人网站怎么推广专业网站模仿
  • 旅游网站建设经费预算网络及it维护外包
  • 东莞网站推广教程扬中经济
  • 湖北德升建站品牌营销案例分析
  • 有关网站开发的文章网站的国际化 怎么做