2018年10月14日 星期日

尋常日記

尋常日記


本文刻意由Macintosh電腦製作貼出


20181015 

若不是為了許多人只會用Line,我根本不可能使用Line。

家人希望我教她們使用Mac,看來也只能使用Line來教,在Line上貼出的訊息,具有封閉性,有其好處。Line是韓國人創建的公司,使用時要自行適時體會國情關係進行取捨。

目前,我正在制裁臉書,所以不去臉書貼出任何技術貼文,也等同於制裁不肯與我同時進行制裁臉書的人。這一招制裁方法,學自美國的動不動就亂制裁他人,我也會、我也能制裁美國。

我想在Mac上搞出一些自有的系統,但截至目前為止,還未能找到能作為編輯程式時使用的軟體,這個問題剛好可以磨練本領。

例如:在Mac上能跑的ciforth叫xina32,但它不能接受從其他作業系統傳過來的純文字程式檔案,暫時只能使用稱為nano的editor編寫,有點不便。我開始摸索這些問題,使用經驗就能用來教我的家人如何在Mac上建立純文字檔案,如此能讓我的發展順便產生好處。

一旦我摸熟了Mac,在三大主要作業系統上,我就全都有了使用經驗。

Mac很貴,不是人人能買得起,我家人送了我一台,我可以在Mac上搞出一些免費能用的程式語言。目前已試出組合語言as、ciforth語言xina、C語言gcc、BASIC語言apple1basic。幾年前,台灣有個醫生朋友,曾經問過我在Mac上能跑什麼forth語言?當時,我沒有這種很貴的電腦,無法回答,現在,逐漸培養出了這種豪華裝置的使用經驗,可以回答了,也可以共同進行研究。

昨天,2018年10月14日,是個令人非常氣餒的一天,我試圖在網上多登記出一些email信箱,然後用來增開免費的個人部落格網頁,以便能夠貼出不同性質的技術網文於不同的部落格網頁,很不幸,沒有手機就是不行,所以忙了一天,挫折連連,只搞出了一個新的email免費信箱叫: youaregood@mail.com ,能用了,但是畫面上會有大量廣告,貪其不要求必須具有手機之便,我還是接受並好好地試用了幾次。網上經營事業者,應該注意到強索手機的惡劣嚴重問題,畢竟,我還是個很能用網的老手,終生堅拒使用手機,強索手機的後果,就會失去我這種用網能手可為您帶來的可觀顧客群體。

至於可以不要求具有手機就能新開部落格的網站,接觸了一個,叫: Wix blogger 的網站,給了我使用權,摸了老半天,卻還貼不出圖文,令人非常懊惱。今天,也許重新再在google公司的blogspot網站上申請一個新的部落格網頁,必須借用我女兒的手機來完成登記。

部落格的貼文方式有其特點與好處,貼出的訊息不會干擾讀者,想看的才看,不想看的就別看。而且,網文只要不撤,放多少年都有其效果,只要是能上網的工具:無論手機、行動裝置或電腦,都能看到部落格網文,算是以單向方式傳遞訊息,我已有十幾年的使用經驗,讀者遍佈全世界。經營部落格能夠成功的條件,是必須規律、正面、認真地貼出有用網文不求回報。

20181016

C程式語言的編寫,與xina32所遭遇的狀況一樣,也同樣只適合使用nano來編寫。

而且,一旦以nano編輯器產生出來的源程式,又被MacOS中的其他文字編輯系統修改過後,這個檔案可能就無法再被C的編譯器接受。

單純的英文字元不受影響,符號才會受到影響,例如:{、}、:、;、\....等符號。

這種現象,可能起因於C編譯器只接受美國資訊交換標準碼(ASCII),而現行MasOS中的文字編輯系統編出之碼,為UTF-8碼,以至於造成純文字檔不相容的現象。

UTF-8碼中包括單純英文字母的ASCII碼,反之不然,符號的碼大概不同。

這方面的問題,我尚不能十分確定,也許並非如此,而純粹只是因為Macintosh電腦鍵盤特殊符號之排列格式與別人不同,才導致產生符號編碼格式不同的問題。

相對於Windows’與Linux作業系統間的關係,編碼問題也有類似性。

Windows’中使用BIG-5編碼,Linux中使用UTF-8編碼。在Linux環境中,可以藉由操作下列指令來更換檔案內容的編碼格式:

$ iconv -f BIG-5 -t UTF-8 input.txt > output.txt

$ iconv -f UTF-8 -t BIG-5 input.txt > output.txt

暫時,我還未在MacOS中使用上列操作方式來完成編碼格式的轉換測試,因為我已很久沒再使用微軟的Windows’作業系統了。

在Linux中編寫出來的文字源程式檔案,可以直接使用於MacOS中的xina或gcc。但在傳輸進入MacOS後,系統無法識別傳過來的檔案類別,會將其歸類為Unix類的可執行檔,而不是正常的文字檔,但能直接被系統載入。

如果嫌傳入之檔案的顯示方式不能反應實況而很礙眼,我的變通辦法是:就用nano重新編寫這個檔案,但不修改任何內容,再以另個檔名存回系統,然後將傳過來的礙眼檔案丟棄。

20181017

中國人使用電腦,要求電腦至少能夠被用來編寫中文文件,這項要求是一件非常重要的事情。

對我個人而言,更是重要,因為我必須使用電腦來創作文章,留下自己研究發展的記錄。或與他人網上溝通,經常使用中文傳送訊息。

幾十年來,過往的歷史不談,目前電腦在編寫中文文件的使用現況,才是最重要的事情,才值得現在談。

微軟的Windows’、蘋果的MacOS、以及公益的Linux三大作業系統,能用來編寫中文文件的文字編輯器,操作方式都有所不同,我最近才累積、得到了這三套系統的使用經驗。

以前,大家在長期使用微軟視窗作業系統的時代,累積了許多編寫出中文文件檔案的操作經驗,於是不太能適應他種作業系統新的使用環境。

現在,國際行情已發展成唾棄微軟而改用公益,我在六年前跟上這種使用趨勢,改用了Linux,已深刻體會出公益軟體能夠提供之性能毫不輸給微軟高價販售軟體的意義,許多性能甚至於遠遠超過微軟的產品,已經被我大量貼出的這種網文產品,就是證明。

今天,不談公益系統中的情況,只談蘋果電腦中的現況。

我用了一個多月的蘋果電腦,此期間強行要求自己,改在只在它的作業環境中建立中文文件檔案。適應初期,確實遭遇過不少使用上的痛苦,現在,已能很順暢地創作中文文章了。

(1) 檔案的存取

現行電腦的系統都非常龐大,無論那一種作業系統,資料存放環境都相當複雜,如果不為自己安排出一個易於存取檔案的方式,自行創建的資料檔案,就很不容易找到它所存放的位置,以便能夠被快速的存取。

我的作法很簡單,由於自創文章之檔案經常要被使用,首先,不妨就直接在桌面上建立一個叫做『my』的資料夾,夾內就存放最近經常要被存取的檔案。如此一來,開機就能快速接觸到此my資料夾,點開,就能直接存取my資料夾中的檔案。

除此之外,既然是搞創作,創作當然需要工具,編輯中文文件的文字編輯器,就也得安排成很容易直接從畫面上點開取得。

功能完整的編輯器在Mac系統中要花錢買,在app store中有很多這種產品,我沒興趣多看。我的電腦已經安裝了『word』編輯器,可以從螢幕底部的工具列中直接點選獲得。

免費的簡單編輯器,有一個名叫『文字編輯』的工具軟體,可以直接從『應用程式』總資料夾中獲得。我習慣於將其放在桌面,以便經常點用,用來存放打算新創的文件。這個編輯器的功能比較單純,但已能應付一般中文文件創作之需。這篇文章,就用這個編輯器完成創作。

至於『應用程式』總資料夾的所在位置,可以在開機後的清新狀態,從頂部工具列中的『前往』選項,拉下菜單後點選獲得,點開的『應用程式』資料夾內,可以找到我所說的『文字編輯』工具軟體,操作滑鼠來拖著、拉、放,就能將其複製到桌面。

(2) 中英文輸入狀態的切換

蘋果電腦的中文使用環境有那些不同?最大的不同,呈現在輸入鍵盤上。

從中英文輸入切換開始就不一樣了。蘋果電腦(此後簡稱Mac)只用單個專門的鍵來切換,位置在鍵盤的最左邊,鍵上標示了『。中/英』,也就是切換時,只需壓一下這個鍵就夠了。在其他的作業系統中,通常要壓兩個鍵,例如:在Linux中要同時壓 ctrl + space。當然,大家都把輸入現況顯示在螢幕最上方的狀態列上,Mac也是,壓切換鍵時,能看到右上方顯示情況的改變。

(3) 中文文件中的符號輸入

我慣用ㄅㄆㄇㄈ中文注音輸入法,這種輸入法,在三大作業系統的電腦中都沒有差異,也就是鍵盤對應的位置沒有不同,所以此處也不討論注音輸入法的事情。該提出來強調的,反而是中文標點符號在鍵盤上對應位置的特別不同問題,而且只談Mac。

通常,中文文件最常用的標點符號為:,、。、:、;、『、』、-、!、(、)、“···等等。

上列每個符號的對應鍵,在三大作業系統中都大同小異,在Mac中,有兩個鍵被特殊安排成一鍵管三個符號,位置在常用鍵盤的『|』與『~』兩個鍵上。我在建立中文文件檔案的初期,有很長一段時間,不知道要將多個名稱分開來時所需使用的『、』符號該如合產生?現在才熟悉了。Mac也將中文符號輸入操作簡化了一點,只需壓 shift +『,』 就能產生『,』符號,不是像其他作業系統中的情況,需要壓三個鍵,其餘類推。

(4) 黏貼操作

其次,滑鼠操作在Mac中也有很大的不同,此事關係到需要進行反白、複製、貼上的剪貼資料操作,而且經常要用,不熟不行。說明Mac在這方面的操作方式之前,必須強調Mac的一項系統顯示方式的特點,此點與其他作業系統不同,如果不熟Mac做了這樣的顯示安排,有很多操作就難以進行。

Mac在開啟一個視窗後,經常會有視窗蓋掉整個螢幕畫面的現象,換句話說,原本在螢幕頂部的工具列與狀態列會消失掉,工具列中的各種操作功能選項就隨之消失了,狀態列也不見了。事實上,這兩列東西仍然健在,只是隱形掉了而已。我在使用初期,也納悶過許久,且不知如何面對所開視窗,不知道下一步該如何處理?後來,把無線滑鼠充滿了電,滑來滑去後,才發現上述關於系統的工具列與現用視窗的狀態列,只要滑鼠的游標再度接近左上角該區域後,這兩列東西就會自動恢復顯示,也才能被點選出想要操作的功能。

有了這個強迫隱形重新顯現的觀念,我才能順利進行資料的黏貼操作。

舉例而言:

(4.1) 反白選擇
滑鼠可以將指定區域的資料,以壓下滑鼠鍵的方式滑動拉開,而令此區域內的資料產生反白而被選定的效果。
(4.2) 複製設定
在Mac中,滑鼠沒有接續點開局部另個小視窗來進行『複製』操作的菜單內點選功能。剛被反白的區域,若欲複製,就必須讓滑鼠游標到左上方去,先讓工具列顯現,然後再從『編輯』欄的下拉菜單中,點選『複製』來完成操作。
(4.3) 貼上操作
接下來,若欲將已被複製的資料貼進別處的環境,假設是另一個物件,可為網上開啟的小視窗,也可以是另一個正被開啟的檔案。要進行『貼上』操作時,有兩種方法可以達到目的,但首先都得先讓滑鼠的游標先在該物件中生效、閃爍。第一種操作方法,仍是去『編輯』欄中拉下菜單,點選『貼上』,就能達到目的。另一個方法,是背記下『貼上』的複鍵操作方式,在別的作業系統中是使用 ctrl + v ,在 Mac 中有類似的複鍵設計,但別人的 ctrl 鍵要換成 Mac 中獨有的四個角都有圈圈的小方格command鍵,此鍵位於最長之空格鍵(space bar)的左邊。

有了上列四項操作要點說明,編寫一般中文文件,便可順利完成。

熟悉Mac的ㄧ般操作後,我在網上進行即時性的打字貼文,也能快速完成,這就是一個多月來的適應成果。

20181018

這次的貼文,以今天在 xina 系統中試跑出一個剛發表於今日 comp.lang.forth 國際論壇網頁中的最新鮮程式來結束。

我貼出此日記式的文章,主要目的是進行 ciforth 在各種環境中的相關系統的介紹, xina 是一個可以使用於 Macintosh OS X 作業系統中的一個好 forth 系統。

暫時,我仍使用 nano 純文字檔案編輯器來準備程式。nano editor 操作起來非常簡單,開始時,只要從 Mac 的 command console 中輸入想要編出之檔案的名稱便可,例如:就像下列命令這麼簡單,檔案的名稱就叫作 ex01。

$ nano ex01

隨後,就會出現底部具有許多複合控制鍵的兩列說明文字,游標所在位置,就是現行可輸入文字的位置。nano editor 好用的主要原因不僅只是如此,它除了具有夠健全的打字輸入式功能外,還能接受前文提到的剪貼式輸入,今天貼文內的檔案程式,就是使用這兩種方式完成的。

除此之外,nano最特別值得強調的操作方式是:結束操作想要存住成果時,只需三個操作便能完成,好記、好用、快速。

一是存起修改完成的整個檔案,使用 control + O 鍵。
二是接受現行檔案的名稱,直接壓下 Enter 鍵。
三是跳出編輯環境,使用 control + X 鰎。

沒有了,編寫程式的過程,就是這麼簡單。

人人都知道,自己週遭的事物才是最重要的東西,我也不例外,想介紹 ciforth 時,費盡苦心去尋找過往的歷史,還不如就從現行最新的環境中找出最恰當的材料。我就從自己經常拜訪的 comp.lang.forth 論壇中尋寶。我在引用別人的資料時,一定記得說明來源,給貢獻者該有的尊敬,這是基本道德。

貼文的標題是:How to separate multiple expressions
原始討論日期:20181008
貢獻程式作者:Ala’a
貢獻修正作者:NN

這個程式的功能是使用純 forth 程式,將ㄧ長串文字,分開成合理的逐列顯示。是純字串處理方面的設計,可以算是屬於二級程度的極佳教材。作者先規劃了幾個基本指令,然後根據想要分開字串的符號為『 = 』號的假設,來設計應用程式,末了,作者自己舉了個簡例,讓程式執行出結果。

原始程式是在商售的 swift forth 中發展的,修正貢獻者,將其改出能在 gforth 中執行的程式,我則藉用這些能人的貢獻,在此將其進一步發揚光大,只對原始資料進行些微的修正,令其能在 Macintosh 電腦上跑 xina forth 時,執行出正常的結果,與全世界同好分享。

隨後,必有更熱心的讀者,對已貼出的程式進行修正與建議,這不屬於我打算在此舉例的範疇,原貼文的作者有他自己想要表現的打算,例如:硬將ㄧ個action指令,設計成要用defer及:noname來形成,以及因他自己喜歡而安排出來的邏輯分支結構。但他貼出程式的熱心,值得鼓勵,我在此處的小小修正,也不值得去跟貼後影響主題。我更應鼓勵對問題有興趣的讀者,自行前往該論壇網頁,閱讀那裡的英文技術資訊,增長自己的技能。

多言不如舉實例,我僅需刊出實際從頭到尾的操作結果,讓讀者自行追蹤與體會,會比我繼續長篇大論的討論內容要好。

大家隨時都該記得,必須感謝這份成果中所有的貢獻者,尤其是 xina forth 的作者 Albert ven der Host。下列,就是我今天早上所有的操作記錄,直接從 command console 上剪貼到文章內的真實顯示。

另外,介紹一個題外話。我這次從台灣回到紐西蘭的航行旅程中,旁邊坐了一個漂亮的德國小姑娘,我特別請教她德意志人姓名的事情,她告訴我, Albert 就是德意志人的姓,其後為名,跟我們中國人的姓名排列方式一樣,先姓後名。

再特別強調, Albert ven der Host 實際上是荷蘭人,擁有高能物理方面的博士學位,長期在所有作業系統中貢獻了 Fig FORTH 的系統源碼給全世界使用,這也是我刻意選用這套 forth 來使用、發展的根本原因,取其具有最原始、古老、健全的歷史特性,任何別的現行 forth 系統,都不具有這種特性。

有心想學的讀者,請仔細逐列了解每一列操作指令所執行出之顯示結果的意義。這也是告訴您如何啟動 xina forth?如何載入檔案式的程式?如何執行出程式結果?的精要典範,能夠了解,您就能夠依樣畫葫蘆,練習出您自己的程式設計。

Last login: Thu Oct 18 10:00:47 on ttys000
cengshutaideMBP:~ com87914206$ cd xina
cengshutaideMBP:xina com87914206$ cat ex01
WANT DEFER
WANT :NONAME

: @end ( a n -- c ) \ return last char.
    2dup 1- + c@ ;
: -find ( a n c -- a n2 ) \ reduce length until c is found
    >R begin @end R@ <> while dup 0= if R> drop exit else 1- then repeat R> drop 1- ;
: (-term) ( a n c -- a n2 )
    \ find term start length (i.e. backward do find '=', remove any space,
    \ and find previous 'space' which is assumed before term).
    [char] = -find -trailing bl -find ;
: -term ( a n c -- a n t' t# )
    \ reduce length until term is found or length is 0. in both return t' & t#
    dup >R (-term) dup 0= if R> drop else 2dup + over R> - abs then ;

defer action
:noname cr type ; is action
: -terms begin dup 0 > while -term dup 0 > if action then repeat ;
S" .param aap=1234 * 4.12e-6 bear =12 lion = V(123)/ {aap}" 2dup type -terms

cengshutaideMBP:xina com87914206$ ./xina

80386 ciforth 5.2
5 LOAD

80386 ciforth 5.2

 ciforth lab  $Revision: 5.100 $ (c) Albert van der Horst   

COPYRIGHT (c) 2000-2009 Albert van der Horst, THE NETHERLANDS
                   LICENSE                                   
This program is free software; you can redistribute it and/or
modify it under the terms of version 2 of the GNU General   
Public License as published by the Free Software Foundation. 
                                                             
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
GNU General Public License for more details.                 
                                                             
You should have received a copy of the GNU General Public   
License along with this program; if not, write to the       
            Free Software Foundation, Inc.,                 
   59 Temple Place, Suite 330, Boston, MA 02111, USA.       
                                                             
: : ISN'T UNIQUE                                             
TASK : ISN'T UNIQUE                                             
 OK
 OK
include ex01
.param aap=1234 * 4.12e-6 bear =12 lion = V(123)/ {aap}
 lion = V(123)/ {aap}
 bear =12
 aap=1234 * 4.12e-6 OK
bye
cengshutaideMBP:xina com87914206$