问题列表 - 第1636页

什么时候新语言是适合这项工作的工具?

很长一段时间以来,我一直在尝试使用不同的语言来查找我想要的功能集,而我却找不到它.我的语言非常适合我的各种项目,但我想出了这些语言的交集,这使我能用一种语言完成99.9%的项目.我想要以下内容:

  • 建立在.NET之上或具有.NET实现
  • 在编译时和运行时都很少依赖于.NET运行时(这很重要,因为其中一个主要用例是嵌入式开发,其中.NET运行时是完全自定义的)
  • 编译器是100%.NET代码,没有非托管依赖项
  • 支持任意表达式嵌套(见下文)
  • 支持自定义运算符定义
  • 支持类型推断
  • 优化尾调用
  • 有明确的不可变/可变定义(准确 - 我喜欢这个,但没有它可以生活)
  • 支持用于强元编程的真实宏(绝对必备)

我一直在使用的两种主要语言是Boo和Nemerle,但我也玩过F#.

针对Nemerle的主要投诉:编译器有可怕的错误报告,实现是错误的,因为地狱(编译器和库),宏只能在函数内部或作为属性应用,并且它是相当重的依赖性(虽然不够,它是一个交易破坏者).
针对Boo的主要投诉:没有任意表达式嵌套(dealbreaker),宏很难写,没有自定义运算符定义(潜在的交易破坏者).
针对F#的主要投诉:难看的语法,难以理解的元编程,非自由许可(epic dealbreaker).

所以我想的越多,我就越想开发自己的语言.

优点:

  • 获取我想要的确切语法
  • 获得更快的周转时间; 难以量化,但我不会惊讶地看到1.5倍的开发人员生产力,特别是由于测试基础设施可以实现某些项目
  • 我可以轻松地向编译器添加自定义功能,以便与我的运行时很好地配合
  • 我得到了一些设计和完全按照我想要的方式工作的东西- 就像听起来像NIH一样,这将使我的生活更轻松

缺点:

  • 除非能够普及,否则我将不得不承担维护的责任.我知道我至少可以让Nemerle的人过来,因为我觉得每个人都想要更专业的东西,但这需要一个村庄.
  • 由于第一个骗局,我担心在专业环境中使用它.也就是说,我已经在使用Nemerle并使用我自己的自定义修改编译器,因为它们根本不能很好地维护它.
  • 如果它没有获得普及,找到开发人员会更加困难,在某种程度上保罗格雷厄姆可能甚至不会宽恕.

因此,基于所有这些,一般的共识是什么 - 这是一个好主意还是一个坏主意?或许更有帮助,我是否错过了任何重大利弊?

编辑:忘记添加嵌套示例 - 这是Nemerle中的一个案例:

def foo = 
    if(bar == 5)
        match(baz) { | "foo" => 1 | _ => 0 }
    else bar;
Run Code Online (Sandbox Code Playgroud)

编辑#2:想象一下如果存在将转换为该语言的代码类型的例子并不会受到影响(单独的S.Lott的回答可能足以让我远离这样做).代码大量使用自定义语法(操作码,:=,quoteblock等),表达式嵌套等.你可以在这里查看一个很好的例子:这里.

boo nemerle

14
推荐指数
4
解决办法
956
查看次数

是否有适用于C/C++的开源BDD工具?

我喜欢Ruby RSpec BDD开发风格.使用C/C++有没有什么好的工具呢?

c c++ testing bdd

20
推荐指数
1
解决办法
1万
查看次数

如何正确命名一个代表1 - n值的变量?

它显然取决于你使用它们的上下文,但我想知道是否有一种普遍接受的方法来命名这些变量,或者至少在数学上下文中.

我经常看到:

float k         = someValue;
float oneMinusK = 1 - k;
Run Code Online (Sandbox Code Playgroud)

......这对我来说似乎是无意义的描述.

请注意,我不是在询问如何命名变量,而是在这种情况下如何命名.您使用它们的示例和上下文将非常感激,

谢谢.

variables naming

2
推荐指数
3
解决办法
467
查看次数

在PHP中动态使用函数原型

我正在用PHP编写一个构造,其中解析器确定动态调用哪个函数,类似这样:

// The definition of what to call
$function_call_spec = array( "prototype"  => "myFunction", 
                             "parameters" => array( "first_par"  => "Hello",
                                                    "second_par" => "World"));

// Dispatch
$funcPrototype = $function_call_spec["prototype"];
$funcPrototype(); // Here we call function 'myFunction'.
Run Code Online (Sandbox Code Playgroud)

这一切都很好,花花公子.但现在是下一步,传递参数,我不知道是否有可能按照我想要的方式进行.它永远不会让我惊讶,但是这些天脚本语言可以做什么,所以这里是:

可以将参数传递给函数,如下所示:

// Here we call function 'myFunction' with the array of parameters.
$funcPrototype( $function_call_spec["parameters"] );
Run Code Online (Sandbox Code Playgroud)

但是,我想用明确的参数等正确地声明'myFunction':

function myFunction( $first_par, $second_par )
{

}
Run Code Online (Sandbox Code Playgroud)

接下来的问题是 - 有没有办法通过循环参数数组动态地将参数传递给函数?

为了澄清,我并不想这样做,是这样的:

$funcPrototype( $function_call_spec["parameters"]["first_par"],
                $function_call_spec["parameters"]["second_par"]  );
Run Code Online (Sandbox Code Playgroud)

因为这需要我的代码静态地知道关于myFunction的细节,这违背了整个想法.

相反,我想以某种方式这样做:

// Special magic PHP function which can be used …
Run Code Online (Sandbox Code Playgroud)

php function-calls

3
推荐指数
2
解决办法
3224
查看次数

防病毒与.net应用程序集成

我想在使用应用程序上传文件时使用反病毒与我的.net应用程序集成.有没有针对.Net的反病毒API?

.net antivirus

11
推荐指数
2
解决办法
5726
查看次数

如何检查数字是否是.NET中的整数?

说我有一个包含数字的字符串.我想检查这个数字是否是整数.

例子

IsInteger("sss") => false 

IsInteger("123") => true

IsInterger("123.45") =>false
Run Code Online (Sandbox Code Playgroud)

.net isinteger

1
推荐指数
2
解决办法
9890
查看次数

通过javascript跟踪表单中的更改的最佳方法是什么?

我想通过javascript跟踪表单中输入的变化.我的意图是(但不限于)

  • 只有在某些内容发生变化时才启用"保存"按钮
  • 如果用户想要关闭页面并且未保存某些内容则发出警报

想法?

javascript forms

47
推荐指数
4
解决办法
4万
查看次数

我如何知道系统是否已启动?

我正在编写一个通过网络启动系统的脚本.然后我需要在另一台主机上运行一些命令.我如何知道系统是否已开机?

我的编程语言是Perl,目标主机是RHEL5.

是否有任何内核中断或网络启动信息表明系统已启动且操作系统已加载?

[在另一种情况下]我也想知道以防我是否只是手动打开我的机器.什么时候才能确切地说已打开电源.何时OS应该完全启动以进行网络相关操作,例如在那里执行网络命令.如果系统在DHCP上,那么远程系统如何搜索这台机器怎么办[我猜它可以通过mac地址.但如果我错了].

如果我错过了任何信息,请随时问我.如果您有任何建议可以使任务更容易,请表明他们:)

thanx imkin

perl boot operating-system uptime

8
推荐指数
3
解决办法
722
查看次数

如何弃用PHP中的函数?

在我工作的团队中,我们有一个旧的代码库,使用PHP的ibase_*函数在整个代码中与数据库进行通信.我们创建了一个包装器,它除了调用原始函数之外还会执行其他操作,我在整个代码中进行了大量搜索替换,以确保使用包装器.

现在,我们如何防止将来使用ibase_*功能?

我希望仍然可以使用它们,但是当它被使用时,它会发出通知或警告.

纯PHP的解决方案(不需要编译自定义版本的PHP)是首选.

php deprecated

30
推荐指数
4
解决办法
3万
查看次数

Ant仍然是Java构建工具的最佳选择吗?

根据我的少量经验,我只使用Ant作为构建工具.还有其他更好的项目,为什么?

java ant build build-management

20
推荐指数
3
解决办法
6468
查看次数