## The Wooyri of Coder (码物语/woo语言/喔) 的由来:
*作者:李焱曦&李夜,修订与2020-12-01*
*****
### **PS:woo语言已经开发完毕,[woo官网](https://woolang.net/)
### **PS:大家喜欢玩游戏的可以到 [wo的B站主页](https://space.bilibili.com/28592193)**
> 一款国产`动态脚本` `面向对象`的编程语言,致敬php、python,拥有和nodejs媲美的包管理器
> woo的愿景:让天下人无需在忍受烦人的编译失败...
> ***PS:Wooyri=物语=“故事,事件”,wooyri这个词是杜撰的,当用的人多了,那么这个词就自然成立了,如同google
The Wooyri of Coder=码人的故事,献给所有有故事的码人***
**woo语言:写命令行比shell简单,写web比php快**
**woo语言:不用编译,下载即安装**
*****
## *.)hello world!
```lua|woo
-- 一个简单的http webserver例子,监听8000端口,然后访问:http://127.0.0.1:8000 输出hello world!
woo.exe -r "woo.http:new():listen(':8000','_out(\'hello world!\')')"
```
**1.下方 使用socket模拟http请求百度首页获取body中内容,在使用正则获取百度首页title中的文本**
>下方代码中的_str_byte()已修改为 _bytes(),_byte_str()已修改为_str()
![](https://img.kancloud.cn/a6/7c/a67c53566811a24fcbc03c25885a089d_2048x1360.png)
>**上方代码运行后,网络正常情况下输出:百度一下,你就知道**
**2.下方模拟控制台中的进度条**
~~~woo
local cls = {}
function cls:new()
return self
end
function cls:progress(curr, total, txt)
local p = curr / total * 50
local h = _str_repeat("█", p) .. _str_repeat(" ", 50 - p)
_out(_format("\r[%s]%.0f%% %s", h, (curr) / total * 100, txt))
end
local p = cls:new()
local total = 100 * 1000 * 100
for i = 0, total, 1024 * 50 do
_sleep(100)
p:progress(i, total, math.ceil(1024 *_rand()) .. "kb/s|wpm.zip")
end
~~~
![](https://img.kancloud.cn/93/9d/939d83b232664f7222b02b5c34ce65fc_560x134.gif)
**3.woo命令行参数:**
![](https://img.kancloud.cn/3c/0f/3c0f57a287fde3e2ddcdb412ea0c3721_1906x1096.jpg)
**3.5 woo启动websocket服务监听程序:**
~~~lua woo
-- 客户端通信超时超过86400秒(一天)后断开ws链接,需要客户端重新链接
local timeout = 86400
local webs = woo.ws:new():listen('0.0.0.0:1288', function(wsHandler)
while true do
-- true表示返回文本,忽略或false表示返回字节集
local clientHandler, strMessage, err = wsHandler:read(true)-- true表示返回文本,忽略或false表示返回字节集
if err ~= nil then
break
end
_out(clientHandler, '=', strMessage, '\n')
if strMessage then
-- 回复客户端收到数据
wsHandler:write(clientHandler, '收到消息:' .. strMessage)
end
end
end, timeout)
~~~
*****
## **4.woo语言可以在树莓派等有gpio接口的机器中使用gpio接口控制外部硬件设备 传感器等:**
是的就是这么任性,视频有待录制
## **5.woo语言支持加密woo脚本,并且执行加密脚本,防止有些不能泄露的代码被恶意使用:**
是的就是这么任性 [去B站看详细加密视频教程](https://www.bilibili.com/video/bv1n64y197DA)
## 一.woo语言支持平台
> 1.)**全平台支持**:`arm32 arm64,armhf,x86, amd64/x86_64`
> 2.)**全系统支持**:`windows/linux(ubuntu/centos/debain/deepin...)/macos`
> *PS:树莓派类似的arm平台也支持运行(支持gpio引脚通信)*
## 二.为什么开发woo语言
>**作为 易语言 程序员出道(期间做过流水线一线工、也骑过电动车跑几十公里给人修电脑装系统修打印机、给人装监控干工程、当然桌面运维也做过、服务器运维也做过),编程语言也玩过很多,比如:java c# aardio gamemarker lua go python php vbs nodejs c++ elec...,也做过游戏开发([去B站主页看看](https://space.bilibili.com/28592193)),当然也不是每个都很精通;其中最痛苦的莫过于开发过程中安装一大堆依赖包,编译编译...,一次成功,那绝对上天眷顾,为了让广大码人不用在忍受这样的过程,那么本人开发的脚本编程语言woo(The wooyri of coder) 解决了这一痛点,一个可执行文件到处运行,无需下载编译其他依赖**
*****
## 三.和其他语言的区别
>1).woo码物语编程语言是为广大[码人]创建的一款不用编译的动态解释型脚本语言,一个解释器,安装及其简单。
2).编码方式类似php,很多全局函数;例如:_json_encode({1,2}),不同的是全局函数前面都有下划线,一是防止和用户局部变量重名,二是用编辑器使用更加方便,输入下划线就弹出所有全局函数,方便输入 查找。
3).woo语言是`多线程`模式的,相对与php的多进程模式占用内存更小,且支持多线程,使用_run('file.woo',params...)来开启一个线程。
4).woo语言的包管理器是wpm(code wooyri package mamager)和python的pip,php的conposer一个用途,`wpm install oshine/bitmap`即可安装对于的包和插件。
5.)语法兼容lua脚本90%,会简单的lua脚本就可以编写。
6.)面试go程序员的时候,应该被问到chan(通道),装逼必须得了解的,当然了,woo语言也集成了这类装B的功能:
```woo|lua
-- test.woo中的内容为:
_chan_put(false,{1,2,3,4,5,6,_ARGS[1]})
-- main.woo中的内容为:
_run('test.woo', "线程1")
_out('主线程loop,取线程提交值', _chan_get(true), "\n")
-- 执行:woo main.woo
```
7.)集成了许多好用的库(开源)
>[woo_proxy | sockets5代理 ](https://gitee.com/oshine/woo_proxy)
(下面的在开发中。。。)
>[Murphy web框架](https://gitee.com/oshine/murphy)
[Excel库](https://gitee.com/oshine/cw_excel)
[悟空分词插件库,高速分词搜索](https://gitee.com/oshine/cw_wukong)
[英文翻译库](https://gitee.com/oshine/cw_translate)
还有更多不一一列举...
开发插件不限制语言,官方提供了插件开发的go语言库:[插件开发库](https://gitee.com/oshine/go_cw_plugs_dev),当然了其他语言也可以开发woo插件,和插件通信使用udp和tcp均可
8.)支持sockets(udp/tcp)/websockets/http服务
*****
> # WOO 官方权威QQ群
> WOO交流讨论群1:465181993
> 1.喜爱撸啊撸可进,喜爱游戏的可进(但是都需要是码人哟)
> 2.go语言大佬 php大佬 lua大佬 java大佬 C#大佬 都可以来,这里各种语言大佬一起聊天撩妹,禁止因编程语言问题吵架(比如php是最好的语言)
> 3.此群只能妹子和大佬进入,大佬进来聊天撩妹,妹子进来被撩(被骚扰请告知管理),和享有程序媛最高礼遇(有问题一群大佬抢着给解决)
> ...
![](https://img.kancloud.cn/14/9f/149f71026fabc2cfda3f2634258b3137_2452x2146.jpg)
>
## *.) 仅以此献给所有有故事的开发者/码人
# 捐赠我们
>**WOO语言目前就我一人(李焱曦/oshine : liyanxi_rhett@foxmail.com)在开发,目前注册了上海曦夜科技有限公司来营运,盼着有大公司来收购,希望渺茫,如果想参与项目的,给我买杯咖啡,买包辣条就是对项目的支持了,感谢支持!**
![](https://img.kancloud.cn/80/b2/80b26db73037a13818fd61fd55682564_247x329.png)
# 特别赞助商:
| 赞助人 | 金额 |相关产品 |
| --- | --- |--- |
| Alan (荟存小程序创始人)<br/> ![](https://img.kancloud.cn/7a/a8/7aa847052e53513a9468e124bafd5105_60x60.png)|1000¥ | ![](https://img.kancloud.cn/65/77/657721c7fe5fa46a1906b7769ef84546_258x258.png)<br/> (荟存小程序) 随时随地寄存行李|
| 跑步爱好者 (导油图小程序创始人)<br/>![](https://img.kancloud.cn/90/26/9026f877993e8d2b72d7de014e4c2144_60x60.png)|1000¥ | ![](https://img.kancloud.cn/1d/57/1d5729acec6afbe1c9c76fe0e6bc6a7a_430x430.png)<br/> (导油图小程序)买油卖油找导油 |
- 序言
- 安装
- 可视化编辑器
- woo 命令行参数详解
- 测试用例
- 简单http服务
- 正则
- gpio控制硬件设备
- 比武不招亲
- 和php比WebServer
- woo语法
- 语法简介
- 基本语法
- woo数据类型
- woo变量
- woo循环
- woo流程控制
- woo函数
- woo运算符
- woo字符串
- 类
- 类的继承
- 模块
- 数组
- 迭代
- table
- 元表(魔术方法)
- 错误处理
- 面向对象
- woo开发必须注意事项
- 函数/模块
- 内置函数
- webServer专属函数
- 内置模块
- gd-2d绘图库
- 2D图形例子
- websockets用例
- buffer缓存
- http
- orm数据库连接
- redis-ssdb连接
- queue队列
- 其他特别函数
- sockets
- 启动线程如何
- Murphy-http Web框架
- 简介
- 全局函数
- model
- view
- controller
- 消息队列
- 全局线程锁
- 包管理器/coder wooyri package manager
- 最ok的包上榜名单
- woo栗子
- 函数传参
- 编码解码
- http模块用例
- 移动读写文件流用例
- 文件下载用例
- 数组迭代
- 进制转换
- _choose用例
- 日期时间用例
- 注明
- wop 码包|coder wooyri peogram
- 码人激励计划