今天教授的软件工程完全专注于面向对象的编程和面向世界的"自然"面向对象的视图.有一个详细的方法描述了如何将域模型转换为具有多个步骤的类模型以及许多(UML)工件,如用例图或类图.许多程序员已经内化了这种方法,并且很好地了解了如何从头开始设计面向对象的应用程序.
新的炒作是函数式编程,在许多书籍和教程中都有教授.但功能软件工程呢?在阅读有关Lisp和Clojure的文章时,我发现了两个有趣的陈述:
功能程序通常是自下而上而不是自上而下开发('On Lisp',Paul Graham)
函数程序员使用映射,其中OO程序员使用对象/类('Clojure for Java Programmers',Rich Hickley的演讲).
那么功能性应用程序的系统化(基于模型的?)设计的方法是什么,即在Lisp或Clojure中?有哪些常见步骤,我使用哪些工件,如何将它们从问题空间映射到解决方案空间?
lisp functional-programming clojure model-driven-development
受Stack Overflow问题的启发问题Emacs中的文本Idomatic批处理?我尝试了一个带有以下标题的Emacs shell脚本:
#!/usr/bin/emacs --script
Run Code Online (Sandbox Code Playgroud)
我在其中放入了一些Emacs Lisp代码,并将其保存为textfile rcat.
由于--script选项不会阻止加载site-start文件,因此我有很多
Loading /etc/emacs/site-start.d/20apel.el (source)...
Loading /etc/emacs23/site-start.d/35elib-startup.el (source)...
Loading /etc/emacs23/site-start.d/50auctex.el (source)...
Run Code Online (Sandbox Code Playgroud)
Bash shell中的消息(stdout).我可以通过打电话来阻止
rcat --no-site-file
Run Code Online (Sandbox Code Playgroud)
要么
rcat -Q
Run Code Online (Sandbox Code Playgroud)
但不是通过更改脚本中的标题:
#!/usr/bin/emacs --script --no-site-file
Run Code Online (Sandbox Code Playgroud)
有没有办法在这样的脚本文件中将其他选项传递给Emacs,而不是稍后在命令行上执行?
Emacs中有各种很酷的编程语言模式,用elisp编写,但显然没有特别支持elisp本身.
由于粘液不适用于elisp,我问自己是否所有elisp代码都只是在临时缓冲区被黑客攻击了?在编写elisp时是不是需要像粘液这样的东西,还是根本就不存在?是否有人使用ECB和语义进行更大的elisp项目?
在学习新的编程语言时,"阅读源代码"是专家们收到的常见建议.然而,像emacs这样庞大的系统,由许多人构建了数十年,初学者想出哪些库是惯用的Elisp编程的最佳例子并不容易.因此,我想就以下标准提出一些建议:
惯用的elisp编程风格
遵守emacs编程指南
根据emacs指南巧妙地使用cl-package
巧妙地使用eieio-package
单个.el文件库的示例性组织
多文件/多包库的示例性组织
您认为重要的任何标准
给出的理由,为什么你推荐某些库自动教学研究肯定会信息在的Emacs Lisp编程初学者.
我有Github repos提供pdf文件作为下载.我记得很好地选择pdf文件作为下载,然后在github页面上关注下载计数器.但现在我想设置这些下载页面的外部链接 - 而且根本找不到它们.
我是否想念一些东西,或者我没有注意到github上有变化?
假设有一个TCP服务器启动并运行在localhost:8080上,在另一个理解列表的Lisp方言中.现在我在Elisp中打开一个网络连接
setq pserv (open-network-stream plisp "test1.l" "localhost" 8080)
Run Code Online (Sandbox Code Playgroud)
并成功将开放网络流程对象分配给变量pserv.但接下来,接下来,如何使用此流程对象向服务器发送请求?我想要做的是将列表发送到评估的其他服务器(作为数据的代码)并返回结果.
在上面的语句中,"test1.l"是与进程关联的Emacs缓冲区,因此结果应该打印在该缓冲区中.如果我把nil放在那里并且进程与任何缓冲区没有关系怎么办 - 如何从Elisp或进程对象访问服务器结果(也可能是列表形式)?
Elisp手册似乎认为这些知识是理所当然的,但我在这里有点迷失.每个提示都将不胜感激.
Emacs显然可以处理多个异步子进程,否则像org-babel这样的多语言编程环境就不可能了.
但是,当我在Dired并启动异步shell命令来查看pdf文件(&evince),然后尝试在第二个pdf文件上执行相同操作时,我收到以下消息:
"一个命令正在运行 - 杀了它?是或否?"
在Dired中有没有办法并行运行多个异步shell命令?
这是一个关于ABAP代码编译过程的技术性问题。
我知道有 ABAP 解析器和扫描器类实际上调用 C 内核函数来完成真正的工作。然后是带有事务的代码完成功能,该事务返回并打印程序的 AST(抽象源树)作为 ABAP 列表或 XML。
现在我的问题是:是否有可能“跳过”ABAP 源代码并通过其他方式直接生成这样的 AST,而不是在 SE80 左右编写然后执行 ABAP 程序,并将其提供给一些编译和执行它的函数好像它是用 ABAP 代码编写和解析的?
也就是说,我可以跳过对源代码的扫描和解析,直接将 AST 提供给编译器吗?如果有,是什么格式?ABAP 列表看起来更像是一种打印格式,不像例如用括号括起来的 Lisp 列表。
我知道如何使用Tramp以root身份使用sudo在Emacs中打开/编辑文件.我想知道是否有办法用sudo运行Emacs命令,而不打开shell?
就像是:
sudo Mx find-name-dired
要么
Mx sudo find-name-dired
例如.
在Windows资源管理器中,有一个函数“ command-prompt-here”(命令提示符-在此处),该命令为实际目录打开命令提示符。
eshell是否有类似的东西,使我可以从实际目录中的Dired打开eshell?当我查看文件时,可以打开包含该文件的目录的eshell吗?是否可以重用已经打开的eshell,即用一个反映实际目录的新提示显示该eshell,而不是打开一个新实例?
最好避免所有这些“ cd ../../../dir1/dir2”。