Tag: c#

厌倦了非语义测试以弥补动态类型 – 建议?

在我开始学习计算机工程之前,我曾经在Rails(之前的PHP)中做过很多Web编程。 从那时起,我在C中完成了大量的学习工作,并在Objective-C(Mac的东西)中完成了一些个人工作。 我学会了喜欢静态打字。 但现在我不得不做一些专业的网页开发(自由职业),并再次获得了Rails。 我发现编写非语义类型检查测试真的很烦人。 我从C和Objective-C编译器中免费获得这些。 我喜欢点击Build并让系统检查我的所有代码,看A可以调用B,B可以调用一些模糊的库C等等。我所要做的只是测试语义。 但是对于Rails,我是编译器。 🙁 有人走过同样的道路吗? 我是使用C#和Java + x框架进行Web MVC的唯一选择吗? 寻找一些建议,甚至是一些同情……:P 顺便说一句,我特别提到了Rails而不是Ruby,因为我不介意Ruby的动态特性,比如脚本或其他简单的东西。 但由于Rails依赖于如此多的gem,并且由于通常会添加许多其他gem,因此动态类型成为一个问题。 谢谢! 编辑: 我跟进了pst的建议并调查了Scala。 在阅读由Scala创作者Martin Odersky撰写的“Scala编程”一书时,我发现了这一段文本,它在很多方面表达了我的关注和更多。 非常有趣的阅读。 摘自Martin Odersky的Scala编程第52页: Scala是静态类型的 静态类型系统根据它们保存和计算的值的类型对变量和表达式进行分类。 Scala是一种具有非常先进的静态类型系统的语言。 从类似Java的嵌套类类型系统开始,它允许您使用generics参数化类型,使用交叉组合类型,以及使用抽象类型隐藏类型的详细信息。 这些为构建和组合您自己的类型奠定了坚实的基础,因此您可以设计同时安全且灵活使用的界面。 如果您喜欢Perl,Python,Ruby或Groovy等动态语言,您可能会发现Scala的静态类型系统被列为其优势之一有点奇怪。 毕竟,有些人认为缺少静态类型系统是动态语言的主要优势。 反对静态类型的最常见的论点是它们使程序过于冗长,阻止程序员按照自己的意愿表达自己,并且使得软件系统的某些动态修改模式变得不可能。 但是,这些参数通常不会违反静态类型的概念,而是针对特定类型系统,这些系统被认为过于冗长或过于僵化。 例如,Smalltalk语言的发明者Alan Kay曾经说过:“我不反对类型,但我不知道任何类型的系统并不是一个完全痛苦,所以我仍然喜欢动态打字。” 我们希望在本书中说服Scala的类型系统远非“完全痛苦”。事实上,它很好地解决了静态类型的两个常见问题:通过类型推断避免了冗长,通过模式匹配获得了灵活性以及编写和撰写类型的几种新方法。 有了这些障碍,可以更好地理解静态类型系统的经典优势。 其中最重要的好处是程序抽象,安全重构和更好的文档的可validation属性。 可validation的属性 静态类型系统可以certificate没有某些运行时错误。 例如,他们可以certificate以下属性:布尔值永远不会被添加到整数; 私有变量不能从他们的课外访问; 函数应用于正确数量的参数; 只有字符串被添加到一组字符串中。 今天的静态类型系统没有检测到其他类型的错误。 例如,它们通常不会检测非终止函数,数组边界违规或除零。 他们也不会检测到你的程序不符合其规范(假设有一个规范,那就是!)。 因此,一些人认为静态类型系统不是很有用。 该论点认为,由于此类型系统只能检测简单错误,而unit testing提供更广泛的覆盖范围,为什么还要使用静态类型呢? 我们认为这些论点忽视了这一点。 虽然静态类型系统当然不能取代unit testing,但它可以通过处理一些本来需要测试的属性来减少所需的unit testing数量。 […]

连接到基于ruby的服务器

我正在使用C#Net framework 2.0开发一个应用程序。 它基本上是一个带有tcp客户端类的应用程序。 应用程序连接到我的服务器,这是一个基本的ruby tcp服务器,它会停留4个小时,然后断开连接 class TelnetConnection { TcpClient tcpSocket; int TimeOutMs = 400; static string host = null; static int prt = 0; static int timetorec = 10; //sec public TelnetConnection(string Hostname, int Port) { host = Hostname; prt = Port; try { tcpSocket = new TcpClient(Hostname, Port); } catch (Exception x) { […]

C#/ Python / Ruby的表达式求值程序

我们在格式中有半复杂的表达式: “25 + [Variable1]> [Variable2]” 我们需要一个表达式求值程序来解析表达式并使用回调来请求变量值并计算出表达式的整体结果。 它必须是一个回调,因为有数千个变量。 我们需要通常的数学运算符,但也需要“if”等等。语言越丰富越好。 我们可以使用我们想要的任何语言。 有人有什么建议吗?

一种语言是否通常将undefined评估为等于false? 如果是这样,为什么这样做?

更新:问题仍未得到答复。 @Alastair_Pitts:除非我遗漏了什么,否则这是一个两部分问题。 第二部分,“如果是这样,为什么要这样做?” 并没有得到回答。 相信问题很清楚,但如果您有任何问题 – 请告诉我。 谢谢! undefined = unknown ,是基于三元逻辑的系统引用。 参考: http : //en.wikipedia.org/wiki/Ternary_logic

如何从C#中解密这个RijandelManaged in ruby​​?

static byte[] keyBytes = new byte[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; static byte[] iv = new byte[] { 1, 1, 1, 1 1, 1, 1, 1, […]

通过COM从Ruby调用C#.dll

我试图在我的Ruby代码中调用C#中的一些方法。 首先,我在Visual Studio 2008中创建一个.dll。我在构建时注册了COM interop。 为了测试这个新进程,我在C#中创建了一个简单的小DivideTwo方法 – public double DivideTwo(double a, double b) { return a / b; } 在Ruby中,我执行以下操作: require ‘win32ole’ test=WIN32OLE.new(‘DllAttempt.CsharpDll’) x=test.DivideTwo(5,5) puts x #x=1 我很兴奋,因为我觉得我已经开始工作了! 我决定通过以下方法从C#返回一个哈希: public Hashtable Hashtbl(string a,int b) { Hashtable bbDataHash = new Hashtable(); bbDataHash.Add(a, b); return (Hashtable)bbDataHash; } 在Ruby中,我执行以下操作: require ‘win32ole’ test=WIN32OLE.new(‘DllAttempt.CsharpDll’) x=test.Hashtbl(“key”,1) puts x #x=# 如您所见,我找回了一个COM对象。 我无法从对象中得到任何东西。 […]

Ruby#等效的C#’using’语句

在过去的几个月里我一直在使用Ruby,但是我还没想到的一件事是using语句的Ruby等价的C#(和其他语言)。 我一直在使用require语句声明我对Gems的依赖,但是我变得懒惰,并且宁愿不完全限定我经常使用的类名和模块(名称空间)名称。 当然这是可能的,对吧? 我一定不能使用正确的术语,因为谷歌没有给我任何有用的东西。

WCF通信虽然命名管道与非.net应用程序

我听说WCF是通过网络和.net中的应用程序进行通信的新标准。 这个想法似乎也有意义,为程序提供标准的通信接口。 这是我的情况,我有一个.net应用程序,我想通过管道与ruby应用程序进行通信。 在.net端(服务器)我想使用WCF,而ruby端(客户端)将是口香糖和胶带。 我假设两端都不需要是WCF,但是要做这项工作会涉及到什么。 是否有标准协议WCF期望传入请求?