惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
D
Docker
F
Fortinet All Blogs
MongoDB | Blog
MongoDB | Blog
月光博客
月光博客
罗磊的独立博客
N
Netflix TechBlog - Medium
Y
Y Combinator Blog
博客园 - 司徒正美
T
Tailwind CSS Blog
C
Check Point Blog
V
V2EX
Microsoft Azure Blog
Microsoft Azure Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
L
LangChain Blog
D
DataBreaches.Net
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
腾讯CDC
Last Week in AI
Last Week in AI
Jina AI
Jina AI
博客园 - Franky
量子位

Vim

vimls-go 0.1.0:用 Go 写的 Vim script / Vim9 语言服务器 - V2EX 分享一个 vim 中执行脚本的小技巧 - V2EX 分享一个 vim 和 tmux 的小技巧 请问怎样在 GVim 中优雅地切换中英文输入法? 有没有喜欢折腾 vim 的 请教一下 VIM 怎么做到类似 idea ide 一样识别函数,自动跳转,查看引用? 现在 vim 为啥要默认进入鼠标那种模式 在 Vim 中优雅使用 Git:一种高效工作流 [插件] step-search.nvim,一个更符合直觉的多关键词聚合搜索工具 请问是否能修改 GVim 标题栏的颜色 插件: nvim-dap-unity IdeaVim 新插件推荐: 优化搜索/命令执行框 https://github.com/yelog/ideavim-cmdfloat vscodevim 中英文切换异常 写了一个 Neovim 国际化插件 i18n.nvim Lazyvim grep 搜索,弹出来的右侧窗口怎么设置内容自动换行? 只会:q?关于 Vim 退出方式,不会还有人知道的比我还多吧? 求问 VS Code 中使用 Vim 插件, Normal 模式下 Tab 被接管了(Insert 模式下可以),没办法接受 AI 的代码提示,有无解决方法? 不知道为什么存在的 vim 快捷键 有无公司要求开发用 Vim 编辑器? coc.nvim 近期的主要更新 vim 执行外部 shell 命令时卡顿,求解决方式 十分尴尬,被导师推荐去使用 JetBrains Nvim 输入法的自动切换 写了一个 flash.nvim on ideavim 的插件 vim-flash, 有兴趣的可以试试 请教 Debian 12.6 的 vi 和 vim.tiny 指向同一文件却执行效果不同疑问 nvim 无法粘贴到转存到系统剪切板 nvim 复制改键 使用 Vim 的时候遇到了一点问题 vim 无法设置无名寄存器作为系统剪切板 awesome-nvim-conf:中文用户 nvim 配置仓库
The ObjectSense Programming Language : An object-oriented...
codigger · 2024-08-20 · via Vim

ObjectSense is a superset of VimL8, and has all the main features of a modern object-oriented language, such as data encapsulation, polymorphism, inheritance, etc. On top of the language implementation, rose - a module manager is provided, which is also built into the language runtime. It's very developer friendly, especially for those who already have a working knowledge of VimL8 can effortlessly expand their skills to code in ObjectSense.

As a bonus feature, polyglot programming is easily doable in ObjectSense. Currently vim8 and vim9 are supported, with minimal work the list can grow longer to include other languages, such as, python, ruby, lua, etc. However, as far as the operating system is concerned, only Linux and MacOS are supported at the moment. There is a user-defined command, UT, for doing unit tests of the current class. It's very convenient for accessing class data in unit tests. No need for finding workaround to the language barrier when accessing such data in white box testing. Every component can be properly tested! Pure and simple! By following a few simple conventions and thanks to the built-in modular mechanism in the language runtime, ObjectSense programs are very scalable and development work can be distributed comfortably among team members.

In a more programming linguistic point of view, ObjectSense is of imperative paradigm on the surface, but carries functional programming abilities. In the language runtime, each object has its own data and functions, there's nothing shared. An object is entirely in its own universe just like functional programming. Because the lack of time, we haven't explored such property of the language much. Hopefully, the community can shed new lights on such nice combination.

This is a strong demonstration of what VimL8 is capable of. ObjectSense takes less than 5000 lines of code for the core of the language implementation. Although it's a superset of an existing language, it's very hard to imagine using such little code for implementing a non-trivial programming language. VimL8 has a lot of unrealised potentials, people really shouldn't jump off the bandwagon too quickly.

The best argument for vim9 is performance. We have found a way kind of 'compile' or speedup the load time for ObjectSense. In practice, we could really compile such code into binary and wire it with the language runtime, and without asking developers to learn a completely new language, i.e., being 100% compatible with existing VimL8 syntax and have the acclaimed performance at the same time. However, in our scenario ObjectSense performance issues have been tackled by the semi-compile approach, so no effort was directed to do the real compiling work which could bloat the code base exponentially.