本想在GOOGLE上搜索一个代码转换器,不料竟搜到这个让涕淌大口吐奶的网站:
http://www.vbconversions.com/topten.aspx (别忘了是右键点击然后在新窗口中打开!)
冠冕堂皇地列了十条TopTen理由,其中第一条尤其经典——C#代码的执行速度比VB.NET要快。
它举了一个计算质数数目的程序的例子(偏偏只提供VB的代码而不给C#版本的,实在不知道他是如何得出结论的),便一口咬定C#用的时间比VB少了一半还多。我实在是忍不住好奇心,斗胆冒着中毒的危险,下载了它的VB源程序(你要吃饱了也可以去下,没毒你别想歪了:http://www.vbconversions.com/sieve.zip)。
代码如下,我简直要喷饭了……
Private Sub llStart_LinkClicked(ByVal sender As System.Object, ByVal e As _
System.Windows.Forms.LinkLabelLinkClickedEventArgs) _
Handles llStart.LinkClicked
If IsNumeric(Me.txtMaxNbr.Text) = False Then
MsgBox("Max Nbr must be numeric!", _
MsgBoxStyle.Exclamation, _
"Max Nbr Not Numeric")
Return
End If
Dim N, i, j
N = CInt(Me.txtMaxNbr.Text)
'他居然要申请一个这么大的数组,看官你莫急,先猜猜他想干什么。
Dim z(N)
Dim startTime As DateTime = Now
'initialize array
'这步纯属吃饱撑的没代志做!他不知道VB里数组初始化本来就是零么?
For i = 0 To N
z(i) = 0
Next
'mark multiples of i
'用这种办法求质数,弓虽两个字!
For i = 2 To N / 2
For j = 2 * i To N Step i
z(j) = 1
Next
Next
'count unmarked numbers, which are primes
Dim nbr = 0
'如此虔诚地重新再搜索一遍数组
For i = 2 To N
If z(i) = 0 Then
nbr += 1
End If
Next
Dim ts As New TimeSpan(Now.Ticks - startTime.Ticks)
'没话说了呵呵,看到这我只能傻笑
Me.lblNbrPrimes.Text = nbr
Me.lblTime.Text = ts.ToString
End Sub
实在不知道怎么还有这么搓的人敢堂而皇之地在网上发这种拙劣算法的代码(涕淌心想他都可以去南大应聘教授了呵呵),然后毫无根据地也能得出一个可笑的结论。说实话,看完这“TopOne”,我后面的九条都不想看了。我的信心剧增啊!!!
ps 写本文时,从疯牛涕淌宿舍窗外时时传来哄闹声——听说中国队已经7:0领先香港队了,你说香港不放水打死我我都不信——今晚怎么发生了这么多啼笑皆非的事情?