“程序设计”目录存档

VBS中Property Set和Property Let的区别

2010年10月28日,星期四

说好不玩VBS来着,但是今天有人问我,简单的写一下吧。

对于这个问题,《VBScript Programmers Reference》第215页说的很清楚:

Functionally, Property Let and Property Set procedures do the same thing. However, the Property Set procedure has two differences:

  • It makes it clearer that the property is an object-based property (any technique that makes the intent of the code more explicit is preferable over any other equally correct technique).
  • Code outside of your class must use the Set Object.Property = Object syntax in order to write to the property (also a good thing, because this is the typical way of doing things).

从功能上说,这两者的作用是一样的。但是Property Set有两点不同:第一,它说明了这个属性是一个与对象有关的属性;第二,在类的外面给属性赋值的时候必须使用Set关键字。

文件说明太抽象了,举个例子:

(更多…)

用VBS精确计算2的100次方

2010年10月27日,星期三

即Grade school multiplication(小学乘法?)算法的VBS实现。既然Python可以计算2的100次方,那么我就要用VBS实现。不过这个效率嘛,计算2的10000次方Python用了0.009013秒,VBS用了120.9805秒,不是一个等级的,我就不多说什么了。

直接上代码: (更多…)

Python中的长整型(Long)乘法C源码分析

2010年10月26日,星期二

最近学Python看的书是《Learning Python》第三版,在Chapter 2里有一个示例

print 'hello world'
print 2 ** 100

然后说了句“我将在这本书的后面解释print语句,以及为什么在Python中计算2的100次方不会溢出”。

I’ll explain the print statement, and why you can raise 2 to the power 100 in Python without overflowing, in later parts of this book.

Python中的长整型(long)和C语言的long有很大的区别(C语言的long对应Python里的plain integer),Python中的long可以实现无限精度(unlimited precision),很好奇这个在C代码中是怎么实现的,于是看了一下Python的C源码。

虽然求幂运算也有对应的算法,但是最终还是依赖于乘法来实现,所以在这里只研究一下Python的长整型乘法。长整型乘法在Python源码中的Objects目录的longobject.c中定义。 (更多…)

会Python的人,你惹不起

2010年10月25日,星期一

从今天开始学习Python。

首先当然是Hello world。

print "Hello world"

输出挺简单,然后试试输入。

name = raw_input("Enter your name:")
print "Hello " + name

也挺简单,再试试条件和循环,枚举100以内的质数。

for i in range(2, 101) :
    for j in range(2, i):
        if i % j == 0 : 
            break
    else:
        print i

感觉for的用法有点奇怪,最后再试试正则表达式,依然是质数。

import re
regex = re.compile(r"^1?$|^(11+?)\1+$")
for i in range(1, 100) :
    if not regex.match("1" * i) :
        print i

哥也是会Python的了,会Python的人,你惹不起。

VBScript的结束,Python的开始

2010年10月24日,星期日

第一次接触VBScript是大一第一个学期期末,那时候刚买电脑不久,由于某种需要(现在已经记不得了)装了个按键精灵。按键精灵的帮助文档中有一部分是VBS教程(可以在按键精灵论坛上找到),其中第一个程序类似于

MsgBox "Hello world"

现在看来当然没什么,但是当时我刚刚初学完C语言,写来写去都是一个黑黑的console窗口。现在在记事本里写一行代码,保存为VBS,连编译都不需要,竟然能够弹出一个GUI对话框,足以让我觉得VBS是如此的强大。

那个教程写得实在是太简单,看完依然摸不着头脑,于是到网上到处搜索所谓的VBS教程,无奈看完仍旧似懂非懂。后来花了一个寒假的时间啃完英文版《Microsoft VBScript Step by Step》,VBS才总算有点入门。于是从此之后鄙视一切所谓的“教程”。

算起来,学VBS的时间也不短了,玩腻了,而且也很久没有学习新的语言了。貌似最近Python很流行,“只有你想不到,没有 Python 做不到”,听起来很牛逼的样子,我也赶一下潮流吧