最近看到越來越多人所開發的軟體使用 .NET Framework,所以我也決定從頭開始學起。本來想要先摸 C# 的,但是之前看到有學弟在玩 Python 更是吸引我!在學弟的介紹下我開始摸 IronPython!他的由來我就不多說了,總之感覺微軟也想要挺 IronPython。所以只要 C# 辦的到的事情,我們都可以透過 IronPython 配合強大的 .NET Framework 來做到。不過執行架構在 .NET Framework 上的程式就一定要先安裝.NET Framework 2.0以上的版本才可以執行。IronPython 初體驗!我又寫了一個字串翻轉的程式來測試一下強大好用的 IronPython
  Microsoft .NET Framework 2.0 可轉散發套件 (x86)下載

  不過有一點是我覺得比較麻煩的,就是寫好的程式可以包成 .EXE 檔,但是一定要有 IronPython.dll、IronMath.dll 這兩個 DLL 檔案才可以執行,不知道有沒有方法可以將這些 DLL 也包在 EXE 檔裡面。現在就來說說 IronPython 和用 VC++ 寫的有什麼差吧。首先差最多的就是處理文字翻轉的部份了,因為 VC 還是用 Big5 來編碼,所以中文字的部份就很麻煩要一個 Byte 一個 Byte 處理,而在 IronPython 中,全部的編碼都是 uft-8 所以不管英文、中文都可以一併處理。

  VC處理字串翻轉的 code:
void CReverseStrDlg::ReverseStr(char *in, char *out)
{
        int in_chi = 0;
        int len = strlen(input);

        for (int i = 0; i < len; i++)
        {
                char ch = in;

                if (in_chi)
                {
                        in_chi = 0;
                        out[i-1] = ch;
                        out = in[i-1];
                }
                else if (ch & 0x80)
                        in_chi = 1;
                else
                        out = ch;
        }
  
        for (int i = len-1, j = 0; i >= 0; i--, j++)
        {
                in[j] = out;
        }

        strcpy(out, in);
}

  IronPython 的 code(一行打完收工):
self._tbxOutput.Text = self._tbxInput.Text[::-1]

  VC自動複製到剪貼簿的 code:
OpenClipboard();
EmptyClipboard();
HANDLE hmem = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, len + 1);
HANDLE hlocmem = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, sizeof(LCID));
if (hmem)
{
        LPSTR buf = (LPSTR)GlobalLock(hmem);
        PLCID lcid = (PLCID)GlobalLock(hlocmem);
        memcpy(buf, output, len + 1);
        // FIXME: Big5 should not be hard-coded since we have GB2312 version.
        *lcid = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL), SORT_CHINESE_BIG5);
        GlobalUnlock(hmem);
        GlobalUnlock(hlocmem);
        SetClipboardData(CF_TEXT, hmem);
        SetClipboardData(CF_LOCALE, hlocmem);
}
CloseClipboard();

  IronPython 的 code(也是一行打完收工):
Clipboard.SetDataObject(self._tbxOutput.Text);

  所以今天的初體驗除了還沒有找到非常好用合適的 IDE 之外,其他都覺得還不賴,目標是可以將 C#、IronPython學好!其實 IronPython 熟了我想 CPython 應該也差不多了!總之,覺得這是未來很好用的程式語言,慢慢用的人會越來越多!替自己加油吧!
arrow
arrow
    全站熱搜

    qazq 發表在 痞客邦 留言(2) 人氣()