国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

追本溯源:substr與substring歷史漫話

FuisonDesign / 2788人閱讀

摘要:基因追本溯源在編程語言的歷史長河中,曾經出現過很多編程語言。的歷史繼承年,網景公司招募了,目的是將編程語言嵌入到中。網景公司決定,他們想創建的腳本語言將補充,并且應該有一個類似的語法,排除采用,,或等其他語言。

引子: 很多時候,當我要字符串截取時,我會想到substr和substring的方法,但是具體要怎么傳參數時,我總是記不住。哪個應該傳個字符串長度,哪個又應該傳個開始和結尾的下標,如果我不去查查這兩個函數,我始終不敢去使用它們。所以我總是覺得,這個兩個方法名起的真是蹩腳。然而事實是這樣的嗎?

看來是時候扒一扒這兩個方法的歷史了。

1 基因追本溯源

在編程語言的歷史長河中,曾經出現過很多編程語言。然而大浪淘沙,鉛華洗盡之后,很多早已折戟沉沙,有些卻依舊光彩奪目。那么stubstr與substring的DNA究竟來自何處?

1950與1960年代

1954 - FORTRAN

1958 - LISP

1959 - COBOL

1964 - BASIC

1970 - Pascal

1967-1978:確立了基礎范式

1972 - C語言

1975 - Scheme

1978 - SQL (起先只是一種查詢語言,擴充之后也具備了程序結構)

1980年代:增強、模塊、性能

1983 - C++ (就像有類別的C)

1988 - Tcl

1990年代:互聯網時代

1991 - Python

1991 - Visual Basic

1993 - Ruby

1995 - Java

1995 - Delphi (Object Pascal)

1995 - JavaScript

1995 - PHP

2009 - Go

2014 - Swift (編程語言)

1.1 在C++中首次出現substr()

在c語言中,并沒有出現substr或者substring方法。然而在1983,substr()方法已經出現在C++語言中了。然而這時候還沒有出現substring, 所以可以見得:substr是stustring的老大哥

string substr (size_t pos = 0, size_t len = npos) const;

從C++的方法定義中可以看到, substr的參數是開始下標,以及字符串長度。

  std::string str="We think in generalities, but we live in details.";
  std::string str2 = str.substr (3,5);     // "think"
1.2 在Java中首次出現substring()

距離substr()方法出現已經有了將近十年之隔,此間涌現一批后起之秀,如: Python, Ruby, VB之類,然而他們之中并沒有stustring的基因,在Java的String類中,我們看到兩個方法。從這兩個方法之中我們可以看到:substring方法基本原型的參數是開始和結束的下標。

String substring(int beginIndex) // 返回一個新的字符串,它是此字符串的一個子字符串。

String substring(int beginIndex, int endIndex)
// 返回一個新字符串,它是此字符串的一個子字符串。
1.3 JavaScript的歷史繼承

1995年,網景公司招募了Brendan Eich,目的是將Scheme編程語言嵌入到Netscape Navigator中。在開始之前,Netscape Communications與Sun Microsystems公司合作,在Netscape Navigator中引入了更多的靜態編程語言Java,以便與微軟競爭用戶采用Web技術和平臺。網景公司決定,他們想創建的腳本語言將補充Java,并且應該有一個類似的語法,排除采用Perl,Python,TCL或Scheme等其他語言。為了捍衛對競爭性提案的JavaScript的想法,公司需要一個原型。 1995年5月,Eich在10天內寫完。

上帝用七天時間創造萬物, Brendan Eich用10天時間創造了一門語言。或許用創造并不合適,因為JavaScript是站在了Perl,Python,TCL或Scheme等其他巨人的肩膀上而產生的。

JavaScript并不像C那樣出身名門,在貝爾實驗室精心打造,但是JavaScript在往后的自然選擇中,并沒有因此蕭條,反而借助于C,C++, Java, Perl,Python,TCL, Scheme優秀基因,進化出更加強大強大的生命力。

因此可以想象,在10天之內,當Brendan Eich寫到String的substr和substring方法時,或許他并沒困惑著兩個方法的參數應該如何設置,因為在C++和Java的實現中,已經有了類似的定義。 如果你了解歷史,你就不會困惑現在。

2 所以,substr和substring究竟有什么不同?

如下圖所示:substr和substring都接受兩個參數,他們的第一個參數的含義是相同的,不同的是第二個參數。substr的第二個參數是到達結束點的距離,substring是結束的位置。

3 參考文獻

維基百科:程式語言歷史

C++ std::string::substr

JavaScript

如有不正確的地方,歡迎指正。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90377.html

相關文章

  • 追本溯源substrsubstring歷史漫話

    摘要:基因追本溯源在編程語言的歷史長河中,曾經出現過很多編程語言。的歷史繼承年,網景公司招募了,目的是將編程語言嵌入到中。網景公司決定,他們想創建的腳本語言將補充,并且應該有一個類似的語法,排除采用,,或等其他語言。 引子: 很多時候,當我要字符串截取時,我會想到substr和substring的方法,但是具體要怎么傳參數時,我總是記不住。哪個應該傳個字符串長度,哪個又應該傳個開始和結尾的下...

    gecko23 評論0 收藏0
  • javaScript的 window對象

    摘要:定時器多次調用單次調用可以用來注冊在指定的時間之后單詞或重復調用的函數,因為它們都是客戶端的全局函數,所以它們都是對象瀏覽器信息運行在什么平臺用戶代理瀏覽器定位和導航一個完整的協議主機名端口文檔路徑查詢字符串哈希部分解析中的查詢字符串,它 BOM Brower Object Module(BOM) 定時器 setInterval() //多次調用 setTimeout() //單次調用...

    Rainie 評論0 收藏0
  • web模擬終端博客系統

    摘要:每次渲染之后記得加個滾動動畫,讓瀏覽器盡可能真實地模擬終端的行為。我們的模擬終端暫時只是文件和目錄的讀取操作,所以自動補全的前提是,系統存儲有完整的目錄和文件。 本文由QQ音樂前端團隊發表 前段時間做了一個非常有意思的模擬終端的展示頁:http://ursb.me/terminal/(沒有做移動端適配,請在PC端訪問),這個頁面非常有意思,它可以作為個人博客系統或者給 Linux 初學者學...

    番茄西紅柿 評論0 收藏0
  • window對象(一) 計時器 定位導航 url解析 瀏覽歷史 對話框 消息推送

    摘要:對象計時器一個作者的寫的關于定時器解釋,記的順手訂閱一下。再次判斷是否存在清除定時任務瀏覽器定位和導航對象的屬性引用的是對象的。 window對象 計時器 一個jQuery作者的寫的關于定時器解釋,記的順手訂閱一下。John Resig,jQuery之父https://johnresig.com/blog/ho...如果時間為0,則會放入隊列之中,由隊列進行調用,即生產者-消費者模型一...

    yankeys 評論0 收藏0
  • 國內存在感最低的前端API——瀏覽器路由

    摘要:最新一直在看關于和路由這塊的知識,最終發現這些路由框架的模塊功能的實現都是基于瀏覽器原生路由的。在瀏覽器中實現前端路由主要有兩種方式一個是我們常用的,另一個是提供的。該對象的和分別表示的各個部分,它們因此被稱為分解屬性。 最新一直在看關于 Vue 和 React 路由這塊的知識,最終發現這些路由框架的模塊功能的實現都是基于瀏覽器原生路由 API?的。本著追根溯源的初心,于是就想著將瀏覽...

    U2FsdGVkX1x 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<