我已经看到很多关于bootstrapping的链接,我想知道使用C编程而不是使用汇编语言来引导X语言编译器的主要缺点是什么?我想知道是否使用C会限制我做的任何事情,就像汇编语言创建一样'C'(即C的编译器如何做).
例如,我在Python中编写的任何东西最终都会被CPython照顾,最终在硬件中以类似C的方式进行 - 这可能不是最佳的?
当然C可能是非常好的语言,但对于其他一般语言,可能不是这样.引导最终是否会产生一些瓶颈,特定于我用于制作引导编译器的语言的限制?像机器代码生成就像C生成代码而不是一些随机方式.
使用C的主要原因是它能很好地将我们的代码映射到机器语言,但它不如汇编那么好吗?所以C有一些性能问题,现在我用C来创建另一种语言的编译器,所以我必须传递那些性能问题吗?毕竟C没有做1-1映射到汇编 - 希望你得到我的问题.
如何以编程方式用c#音译俄语短语?例如:" Мненакризиснаплевать,вылезвтопегоубухать?"
这可能是一个非常奇怪的问题,它肯定是.我不太熟悉编程语言是如何用传统方法制作的,所以我想知道,是否可以设计无语法编程语言?这意味着任何输入都是有效的并执行某个计算,并且相同的输入将始终执行相同的操作.将不会出现语法错误(允许逻辑和运行时错误,程序可能崩溃,进行随机计算等).
我想到了这一点,因为遗传学基本上是我的理解,就像那样.
编辑:我认为存在一些误解.无语法只是意味着所有输入都将计算,解释器/编译程序将遵循该特定指令集,但可能是随机的.
此外,它必须匹配每个输入都有1个且只有1个输出的事实.诸如语法错误之类的内容违反了该规则.
编辑2很多人都在使用语法部分.忘记语法,关注任何输入将产生UNIQUE输出的事实.
我是一名PHP和ActionScript开发人员,在我的一些函数中,我用return
它来结束它.例:
private function lolsome(a:String):void
{
if(a == "abs"){return void;}
// function's code
}
Run Code Online (Sandbox Code Playgroud)
我可以将函数的代码放入其中else
,但我更喜欢这种方式,因为在我看来,这更加清晰.我只是想知道这是否被认为是一种不好的做法或类似的事情.
谢谢!
我有以下问题(Haskell - 函数式编程工艺):
给出函数的定义
howManyEqua1 :: Int -> Int -> Int -> Int
Run Code Online (Sandbox Code Playgroud)
它返回三个参数中有多少相等,所以
howManyEqua1 :: 34 25 36 = 0
howManyEqual :: 34 25 34 = 2
howManyEqual :: 34 34 34 = 3
Run Code Online (Sandbox Code Playgroud)
我给出的答案是:
howManyEqual :: Int -> Int -> Int -> Int
howManyEqual a b c
| a == b && b == c = 3
| a == b = 2
| b == c = 2
| a == c = 2
| otherwise = …
Run Code Online (Sandbox Code Playgroud) 从本质上讲,我想要一个特殊形式的Interface
异常,需要任何使用我的对象的人用特定的catch
实现来包装它.
例
我有一个将数据发送到另一个主机的对象.我希望现实的实现需要一种方法来处理以下异常:
类似于如何使用一个Interface
或一个Abstract
类来强制在派生类中创建方法和属性,有什么方法可以强制消费者以我期望的方式实现异常处理?
在类似的说明中,我还想强制方法(通过Interface或Abstract创建)能够生成某些异常.当然它们可能未实现,但我想告诉那个开发人员(谁没有阅读文档)应该考虑他们.
目标
此异常检查的好处是可以实现更强大的错误处理.这将由消费者使用对象和对象创建者来完成.
解?
我能想到的唯一方法是T4模板,但这并不像我想的那样完整.我很乐意看到这种语言本身实现了.
我正在从DotNet转向java,这种扩展的想法是新的.
我已经看到一些帖子完全解释了使用List<? extends SomeAbstract>
vs. List<? super SomeAbstract>
vs. List<SomeAbstract>
,但我猜测在泛型中使用和不使用扩展之间没有区别.
真的吗?如果使用抽象类作为父级,答案会改变吗?
class My_AbstractExtends<T extends SomeAbstract>
Run Code Online (Sandbox Code Playgroud)
与
class My_Abstract<SomeAbstract>
Run Code Online (Sandbox Code Playgroud)
按如下方式创建子类
class My_ChildExtends extends My_AbstractExtends<ConcreteChildOfSomeAbstract>
Run Code Online (Sandbox Code Playgroud)
与
class My_Child extends My_Abstract<ConcreteChildOfSomeAbstract>
Run Code Online (Sandbox Code Playgroud) 为什么不是1/0 == Inf
每种语言?这不是数学上最正确的反应吗?
我熟悉的所有语言都能够表达无限和NaN值,那么为什么他们会选择抛出错误或返回NaN呢?是否只是让科学应用程序开发人员的生活变得更难?;-)
更新:我们应该关闭这个问题,因为我错误地认为1f/0f == Float.NaN
在Java中.但我错了:它确实正确回归Float.Infinity
.这是我的主要困惑; 只要没有语言返回NaN,一些语言抛出错误的事实是可以理解的.
是否在PHP中随机命名了函数及其参数?我发现很难记住哪个功能是如何,并且总是发现自己参考手册.你怎么做才能记住它们而不必每次都参考手册?
几个例子:
array_map(callback, array)
但是array_filter(array, callback)
.当处理字符串时strstr()
,strpos()
并substr()
没有下划线,但是str_replace()
,str_pad()
并str_split()
不会.在大多数情况下,字符串被接受为第一个参数,但在explode()
字符串中是第二个参数.