工科生,出于兴趣想写一个计算器。
目前支持功能:
1、多语句,比如命令行输入 3+cos(pi/3);;4+afx(4, sin(5))。以双分号分隔。
2、自定义变量(输入 n=6.6)和自定义函数(输入 afx(x,y)=x-cos(x))。其中单变量函数支持求极限、求导和定积分,都是用原始方法粗略模拟的。用到 ruby 的反射。这个单项不能保证数学上的正确。
3、支持逐行解析文本文件并保存结果到文件。
4、支持数列按多个循环的填充公式生成,和数列求和。支持通过遍历区间来暴力求二元方程的解。(注:这一分项的功能都可能出现不能计算的意外情况。)
5、按入门教程写了个超简易的 cgi,试过网页访问,计算速度还算及格……因为我一开始理解的 cgi 都是访问一次就运行用户层 ruby 一次,所以很怂地在每次退出用户层时都把用户自定义的变量和函数保存成 txt。json 还没学,也挺想学学的。
(功能陈述完毕)
我在 github 搜了一下 calculator,好像都是按键的四则运算,我没什么可以参考的,这和我的玩耍理念不一样啊。懒于 fq,obey the law 惯了学不会折腾……也不知道搜索什么关键字?或许利用什么技术?
实战过程:一开始用 perl6,类型转换跳了不少坑,转 ruby。遇到坑了,不用 eval ;于是用户层用 ruby 写,ruby 写执行计算的 ruby 新脚本,然后 system 过去,再从 txt 获取结果。
后来因为逻辑没考虑好,执行一万次运算时 ruby 太慢所以改为 c++写计算文件,ruby 调用 g++编译、执行。后来逻辑搞清楚了,继续 ruby+ruby,计算速度也还行,就弃用 c++了。
现在打算计算层改为:用户层 ruby 生产完含有两个方法的带编号的 ruby 新脚本之后,load ext_NN.rb ,调用 ext_cal_NN 方法(NN 是任务的数字编号),返回计算结果的数组。可是这样会不会导致内存消耗异常?有次手贱写错逻辑,结果 ruby.exe 占用了 2G 内存,后面任务管理器就卡死了,差点关不了机。
求高人指路。1、计算器还应添加什么有用又容易实现的功能?我目前就只会百度和看 ruby 基本教程,也下了基本 ruby 系统管理的电子书,github 看 ruby 开源项目的一堆都在定义类,不知道从哪里看起。2、有哪些类似的开源项目可以参考? java、php、c#的基本语法都懂一点,对 python 和 js 无感。3、这个玩具还有值得投入时间的意义吗?
因为编程的概念太宽泛,不是面向工资编程的我不知道选什么方向啊。我就只觉得随着功能增加,不可能选用 eval,要不然该怎样使用用户自定义的 afx(x, y)函数,还有怎样生成多个自变量循环的数列呢,这些东西都不知道怎么表达和搜索。
目前支持功能:
1、多语句,比如命令行输入 3+cos(pi/3);;4+afx(4, sin(5))。以双分号分隔。
2、自定义变量(输入 n=6.6)和自定义函数(输入 afx(x,y)=x-cos(x))。其中单变量函数支持求极限、求导和定积分,都是用原始方法粗略模拟的。用到 ruby 的反射。这个单项不能保证数学上的正确。
3、支持逐行解析文本文件并保存结果到文件。
4、支持数列按多个循环的填充公式生成,和数列求和。支持通过遍历区间来暴力求二元方程的解。(注:这一分项的功能都可能出现不能计算的意外情况。)
5、按入门教程写了个超简易的 cgi,试过网页访问,计算速度还算及格……因为我一开始理解的 cgi 都是访问一次就运行用户层 ruby 一次,所以很怂地在每次退出用户层时都把用户自定义的变量和函数保存成 txt。json 还没学,也挺想学学的。
(功能陈述完毕)
我在 github 搜了一下 calculator,好像都是按键的四则运算,我没什么可以参考的,这和我的玩耍理念不一样啊。懒于 fq,obey the law 惯了学不会折腾……也不知道搜索什么关键字?或许利用什么技术?
实战过程:一开始用 perl6,类型转换跳了不少坑,转 ruby。遇到坑了,不用 eval ;于是用户层用 ruby 写,ruby 写执行计算的 ruby 新脚本,然后 system 过去,再从 txt 获取结果。
后来因为逻辑没考虑好,执行一万次运算时 ruby 太慢所以改为 c++写计算文件,ruby 调用 g++编译、执行。后来逻辑搞清楚了,继续 ruby+ruby,计算速度也还行,就弃用 c++了。
现在打算计算层改为:用户层 ruby 生产完含有两个方法的带编号的 ruby 新脚本之后,load ext_NN.rb ,调用 ext_cal_NN 方法(NN 是任务的数字编号),返回计算结果的数组。可是这样会不会导致内存消耗异常?有次手贱写错逻辑,结果 ruby.exe 占用了 2G 内存,后面任务管理器就卡死了,差点关不了机。
求高人指路。1、计算器还应添加什么有用又容易实现的功能?我目前就只会百度和看 ruby 基本教程,也下了基本 ruby 系统管理的电子书,github 看 ruby 开源项目的一堆都在定义类,不知道从哪里看起。2、有哪些类似的开源项目可以参考? java、php、c#的基本语法都懂一点,对 python 和 js 无感。3、这个玩具还有值得投入时间的意义吗?
因为编程的概念太宽泛,不是面向工资编程的我不知道选什么方向啊。我就只觉得随着功能增加,不可能选用 eval,要不然该怎样使用用户自定义的 afx(x, y)函数,还有怎样生成多个自变量循环的数列呢,这些东西都不知道怎么表达和搜索。