如果有人要求你制作关于某事的节目,你能用你知道的任何语言进行,而不需要参考吗?
你能记住所有的语言功能,因为有些功能在其他语言中是不可能的吗?例如,C++可以继承两个类,而在Java中你不能(你可以接口).如果它不是一个静态const ...你也可以在C++中初始化一个实例变量.
我问这个是因为在我可以用Visual Basic编程之前,但现在我正在研究Java,事情发生了变化 - 就像实例化对象的语法一样简单,我感到困惑.我需要看看Visual Basic引用才能做到这一点.
学习许多不同的编程语言是坏的吗?因为我觉得我浪费时间学习Visual Basic.
我有很多函数,如果我有一个数组,[echo, "Bob is Good"]我想用整个数组的参数运行echo函数.因此,它需要arr[0]并使用整个数组的参数运行该函数.现在我只有if语句,例如:
...
elif arr[0] == 'echo':
echo(arr)
elif arr[0] == 'var':
var(arr)
Run Code Online (Sandbox Code Playgroud)
此外,最好,现在我的功能设置为前缀cmd.例如,echo函数将被称为echocmd,因此如果有一种方法可以实现,那么它也会很棒!
因此,在unix环境中的Python中,我们可以从终端打开python,开始编写代码并立即运行它来测试一些python库函数.是否有类似的C#或Java命令行/脚本环境(可能是IDE的插件?)?这样的工具对于试验像System库这样的东西似乎非常有用.
相关地,我读到某些版本的Python在被虚拟环境执行之前被编译成字节码,这听起来像Java和C#.但是,我在终端中打开并开始输入代码的Python程序必须被解释,对吧?所以基于原理,似乎可以编写C#或Java解释器.所以我不确定为什么我没有看到任何人在命令行上与C#或Java交互,就像他们使用Python一样.
谢谢.
我正在学习C,而且我知道如何在Mathematica上编程.
在Mathematica上,我可以简单地通过编写来声明变量:
a=9
a="b"
a=9.5
Run Code Online (Sandbox Code Playgroud)
似乎Mathematica通过简单地阅读并在其上找到某种模式,自然地了解这是什么类型的变量.(Int,char,float).我猜Python有相同的功能.
在C语言中,我必须先说出它是什么:
int num;
char ch;
float f;
num=9;
ch='b';
f=9.5;
Run Code Online (Sandbox Code Playgroud)
我知道这延伸到其他languanges.所以我的问题是:为什么编程语言需要这种变量声明?
关于该主题的参考将非常有用.
我知道编译器使用相同语言实现的许多语言: - C#Roslyn编译器在C#中实现 - F#编译器在F#中实现
现在,我认为可以在C#5.0中实现C#6.0的编译器
然后我的问题是关于该语言的相同版本,即:
can a compiler of a language L be implemented in the same language L ?
Run Code Online (Sandbox Code Playgroud)
我问这个是因为我听说打字稿编译器是在typescript中实现的,但是没有以前版本的typescript语言.
提前致谢.
我看到一个带有代码片段的演示文稿,其中包含"when"而不是"if".代码看起来像基于JVM的脚本语言,使用缩进而不是"{}"而不是每行都用';'完成
你能给我一个线索,它可能是哪种语言?
有些东西我从未在任何编程语言中看到,我会知道为什么.我相信这些东西可能有用.如果你指出,也许解释会很明显.但是我们走了.
为什么不是10²,在语法上有效?有时,我们希望通过使用这样的符号来表达(就像在论文中一样)而不是预先计算的值(有时,这是一个很大的数字,并且,当第一次看到时会使一些困难,我相信它的目的是_在D和Java编程语言中)或仍然为此调用数学函数.当然,我说编译器将此变量的值替换为计算值,不要在运行时将其保留.
在-在indentifier.为什么 - 对我int name-size = 14;不喜欢_?(只是lisp方言),并不意味着难以理解.或者这个"限制"属于计算机的字符集?
当有人回答我的问题时,我会很高兴.此外,如果您有另一个要求的指针,只需编辑我的答案并在其版本上发布注释或发布为评论.
为了评估乘法,你必须评估第一个术语,然后是第二个术语,最后将两个值相乘.
假设每个乘以0的数字为0,如果第一项的评估返回0,我将期望在不评估第二项的情况下将整个乘法计算为0.
但是,如果您尝试此代码:
var x = 0 * ComplexOperation();
Run Code Online (Sandbox Code Playgroud)
尽管我们知道x是0,但函数ComplexOperation被调用.
优化的行为也与布尔运算符'&&'一致,仅当第一项被评估为真时才计算第二项.('&'运算符在任何情况下都会评估这两个术语)
我测试了这种行为,C#但我猜几乎所有语言都是一样的.
我正在尝试为处理lambda演算的语言编写一个小编译器.以下是我发现的语言含糊不清的定义:
E ? ^ v . E | E E | ( E ) | v
Run Code Online (Sandbox Code Playgroud)
符号^,.,(,)和v是标记.^表示lambda,v表示变量.形式^ vE的表达式是函数定义,其中v是函数的形式参数,E是其主体.如果f和g是lambda表达式,则lambda表达式fg表示函数f应用于参数g.
在假设函数应用程序是左关联的情况下,我试图为这种语言编写一个明确的语法,例如fgh =(fg)h,并且该函数应用程序比...更严格地绑定,例如(^ x.^ y. xy)^ zz =(^ x.(^ y.xy))^ zz
这是我到目前为止所做的,但我不确定它是否正确:
E -> ^v.E | T
T -> vF | (E) E
F -> v | epsilon
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
lambda grammar parsing programming-languages lambda-calculus
c# ×2
.net ×1
compilation ×1
expression ×1
grammar ×1
indentation ×1
lambda ×1
parsing ×1
python ×1
scripting ×1
syntax ×1
types ×1
variables ×1