TWI493464B - 用於晚期繫結可程式化輔助的系統與方法 - Google Patents

用於晚期繫結可程式化輔助的系統與方法 Download PDF

Info

Publication number
TWI493464B
TWI493464B TW097117725A TW97117725A TWI493464B TW I493464 B TWI493464 B TW I493464B TW 097117725 A TW097117725 A TW 097117725A TW 97117725 A TW97117725 A TW 97117725A TW I493464 B TWI493464 B TW I493464B
Authority
TW
Taiwan
Prior art keywords
type
types
late
dynamic
component
Prior art date
Application number
TW097117725A
Other languages
English (en)
Other versions
TW200901037A (en
Inventor
梅傑漢瑞奇斯約翰尼斯瑪莉亞
席爾維亞曼達
維克保羅A
Original Assignee
微軟公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 微軟公司 filed Critical 微軟公司
Publication of TW200901037A publication Critical patent/TW200901037A/zh
Application granted granted Critical
Publication of TWI493464B publication Critical patent/TWI493464B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • G06F8/437Type checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors

Description

用於晚期繫結可程式化輔助的系統與方法
本發明係關於晚期繫結可程化輔助。
電腦程式係指令群組,其說明藉由一電腦或其他基於處理器的裝置執行之動作。當一電腦程式在電腦硬體上被載入及執行時,該電腦將藉由遵循該電腦程式之該等指令以一預定方式運作。相應地,該電腦變為一執行該等指令規定工作之專用機器。
一程式設計師使用一或多種程式設計語言建立包括一電腦程式之指令。通常,原始碼係由一程式設計師手動及/或藉助一整合開發環境(IDE)指定或編輯。隨後,該原始碼可藉由另一程式編譯或以其他方式轉換為可由一電腦或類似裝置執行之電腦指令。
舉例而言,一程式設計師可選擇利用一物件導向程式設計語言(例如,Visual Basic、C#、Java…)實施編碼。依據此等一典範,程式設計師將建立識別一抽象物件之屬性及特性之若干類別,以及說明類別行為或功能之方法。然後可指定特定可程化邏輯,作為類別或物件等等之執行個體之間的互動。隨後,可藉由一關聯編譯器產生針對一特定機器之可執行編碼。或者,編碼可被轉換為針對一目標虛擬機之中間編碼(例如,CIL(共用中間語言)、Java位元組編碼…),以促進經由進一步編譯或解釋該中間編碼在多個電腦平台上執行。
傳統上,程式設計語言不是靜態類型就是動態類型。類型對根據一語言類型系統解釋資料提供了約束。相應地,類型可被用於經由一類型檢查來偵測程式設計錯誤。換言之,可藉由偵測無意義或可能無效之程式碼,獲得一定程度之程式安全,以此作為資料類型之一函式。這可以靜態或動態方式完成。一靜態類型語言允許在編譯時對程式進行類型檢查。相應地,所有類型在編譯時已知,舉例而言,藉由顯式規範或類型推斷而獲知。動態類型語言之不同之處在於其在運行時進行類型檢查。因此,無須在使用之前明確指定類型,相反,類型係在執行期間決定。
當選擇一語言時,程式設計師需要考慮靜態與動態類型之間之平衡。特定而言,靜態類型之益處在於錯誤可在執行之前被偵測及程式可非常有效地執行。此外,由於可基於類型提供諸如自動填充及建議等輔助,設計時體驗可得以改良。然而,動態類型語言允許比靜態類型語言更多之可程化靈活性,同時經由運行時檢查仍然提供一定程度之類型安全。此外,動態類型語言更易於使用,原因在於程式設計師無須考慮類型規範。
以下展示一簡化發明內容以便為所主張標的之某些態樣提供一基本瞭解。本“發明內容”並非一詳盡概述。其無意於識別關鍵/重要元素或描繪所主張標的之範疇。其唯一目的係以一簡化形式展示某些概念,作為之後展示之該更詳細說明之一序部。
簡而言之,本揭示案係關於提供可程化輔助。更具體而言,可針對動態/晚期繫結類型及/或呼叫提供可程化輔助。動態類型輔助可單獨或結合靜態類型輔助使用,以促進整體程式開發。這允許實現一非常靈巧之程式設計風格,在此風格下,程式設計師在無需擔心類型之情況下開始探索一問題。隨後隨著設計之定型,可添加靜態類型以提供類型安全及有效執行。
依據本發明之一態樣,可自靜態資訊及/或設計時執行查明動態類型。可使用諸如源自程式流分析、程式設定檔、程式設計師設定檔及先前運行之靜態資訊,來識別大致或推測之動態類型。進一步地或替代性地,精確類型可識別自設計時程式執行。
依據本發明之另一態樣,可程化輔助可作為一或多個識別靜態類型之一函式來提供。在一實施例中,此等輔助可與成員列出及自動編碼完成相關。在此情況下,成員可作為一或多個精確及/或大致類型之一函式提供,以用於選擇及自動編碼完成。亦提供各種技術以向使用者提供相關可程化輔助。
為實現上述及相關目的,本文將結合以下說明及隨附該等圖式說明所主張標的之某些示意性態樣。此等態樣指示其中可實踐本標的之各種方式,所有該等方式意欲涵蓋於所主張標的之範疇內。當結合圖式考慮時,可自以下「實施方式」清楚地明白其他優點及新穎特徵。
以下針對在一整合開發環境內之晚期繫結或動態類型可程化輔助說明系統及方法。可識別精確及/或推測類型以用於利用設計時分析之建構,並可將其用於在程式規範中提供包含自動編碼完成的有用輔助。可使用各種機制來提供最相關的輔助。此外,可與靜態類型程式輔助組合提供動態類型程式輔助。
現參照隨附該等圖式對本揭示案之各種態樣進行說明,其中在全文中類似標號指示類似或對應元件。然而。應瞭解,該等圖式及其相關詳細說明無意限制所主張標的於所揭示之特定形式。相反,其意圖涵蓋落入所主張標的之精神及範疇內之所有修改、均等者及替代者。
首先參照第1圖,根據所主張標的之一態樣圖解說明一程式開發系統100。在一實施例中,該系統100可對應於一整合開發環境(IDE)或其部分,包含但不限於一程式碼編輯器。該程式開發系統100包含一動態類型元件110及一輔助元件120,以及其他元件。
該動態類型元件110係一用於決定晚期繫結可程化建構之類型之機制。如以下更詳細之說明,該動態類型元件110可操縱以決定、推斷或以其他方式識別或查明程式資料類型之精確類型及/或推測或近似。此外,動態類型元件110可在設計時而非執行時識別一或多個類型。
該輔助元件120接收、擷取或以其他方式獲得或獲取藉由該動態類型元件110產生之類型資訊,且基於該類型資訊產生回饋。基於類型之回饋可促進程式或編碼規範, 及其他目的。在一實施例中,該輔助元件120可提供建議、推薦或提示以輔助程式設計師。舉例而言但非限制,其中一程式設計師指定一物件接收器及一點運算子("."),該輔助元件120可提供一下拉式選單,該選單識別若干陳述式完成選項,其中包含藉由所識別接收器類型或類別提供之物件成員。
程式開發系統100之一優勢係在於允許實現一靈巧程式設計風格。程式設計師使用晚期繫結類型之一種原因在於其希望以一簡便方式來開始程式設計。其希望開始“探索”一問題空間,而不會因類型宣告及諸如此類而陷入困境。這可部分地藉由靜態類型推斷來解決,在此方式中,程式設計師在可自動推斷類型之處省略類型。然而,這仍然係限制性的,原因在於變數僅可為某一特定靜態類型。動態類型在程式開發過程中提供了進一步的靈活性或流暢性。遺憾的是,習知技術因不能精確地在最需要回饋的點位處提供可程化輔助,從而阻礙了此等一程式設計風格。程式開發系統100藉由針對動態或晚期繫結類型提供設計時可程化輔助或回饋,來解決此問題。
現轉向第2圖,根據本發明之一態樣圖解說明一代表性動態類型元件110。動態類型可利用靜態及/或執行分析來決定或近似。相應地,該動態類型元件110包含一靜態分析元件210及一執行分析元件220。
該靜態分析元件210提供一種用於使用靜態資訊近似動態類型之機制。該靜態分析元件210可使用硬編碼指 令、啟發式及/或機器學習來促進類型標識,以及其他目的。此外,由於該精確類型不可能藉由定義而被靜態地以絕對確定性而識別,可能會識別一個以上類型。結果,該靜態分析元件210可產生若干可能或候選動態類型。
在一實施例中,該靜態分析元件210可執行程式流分析(例如控制及/或資料…)以決定候選類型。更具體而言,在一程式中之每一呼叫站點處,該靜態分析元件210可收集一晚期繫結呼叫之一接收器可擁有之所有可能靜態已知類型之聯合。舉例而言但非限制,考慮以下程式碼片段:Dim X As Object If SomeCondition X="Hello" Else X=new Button() End If
在該程式碼之第一行中,該變數“X”被宣告為“Object”(物件)類型。相應地,由於其為明確宣告,這可能是該變數“X”之一類型。然而,這並非非常有用,原因在於“Object”(物件)係一根或超級類型,且在某些語言中,它僅用於指示一變數、表達式或諸如此類係晚期繫結。此外,該後續條件指定更特定之類型。該條件係一“If,Then,Else”條件,其中向“X”指派該字串“Hello”或將其具現化為一新“Button”(按鈕)。由於其表示該動態類型變數“X”之潛在類型,對該靜態分析元件210之此等程式流分析之結 果可為該組類型“String”(字串)及“Button”(按鈕)。
藉由該靜態分析元件210提供之該組潛在類型可藉由複數個其他資訊產生或影響。舉例而言,可使用以前的程式執行資訊來識別一類型。此外,可針對推斷候選動態類型來考慮程式及/或程式設計師設定檔資訊或其他上下文資訊。
此外,儘管該靜態類型分析元件210可分析包含連結部分(例如,API、庫…)之一整個程式,但在某些實例中,出於實用目的,可對此進行縮減。舉例而言,如果尚未對一類型“Object”(物件)之變數進行指派,或者如果一參數或函式結果具有類型“Object”(物件),則該組可能類型可係未繫結。舉例而言,分別考慮“Dim X As Object=F()”或“Sub G(X As Object)”。為將此導向實際用途,可將該靜態分析元件210限制於在一定範圍中之某些類型。舉例而言,當“Object”(物件)係一方法返回類型時,該元件210可執行一全域或整個程式分析,以決定該可能返回類型F可能為何種類型,以降低命中數。當使用一物件類型之參數時,該靜態分析元件210可執行一全域分析,以找到其中“G”被呼叫之所有可能位置,且自此等呼叫站點決定一更小組之可能類型。
該動態類型元件110之執行分析元件220提供一機制,用以作為設計時執行之一函式來識別一精確動態類型。程式執行可在程式規範期間之背景下執行,且可自此執行擷取動態類型資訊。在一實現中,這可藉由如下方式 來完成:利用一批次編譯器及讀取-評估-列印回圈(讀取-評估-列印回圈,或讀取-評估-列印回圈)或其在一程式開發系統(諸如一整合開發環境)內之修改。這不同於讀取-評估-列印回圈之習知使用,其涉及利用在一整合開發環境外部之一互動讀取-評估-列印回圈環境,以用於動態類型程式碼及將此等程式碼剪下及貼上一利用一整合開發環境開發之主程式。在一程式開發系統內部,可為程式碼指定中斷點或諸如此類,以控制幕後執行。舉例而言,考慮包含該“If,Then,Else”條件之上述程式碼片段。如果在該條件之後提供一中斷點,則可自執行補獲一精確動態類型,在此為“字串”或“按鈕”(Button)。
參照第3圖,根據所主張標的之一態樣圖解說明一代表輔助元件120。如前所述,該輔助元件120可作為類型資訊之一函式提供程化輔助及/或回饋。在一實施例中,該輔助可包含有關編碼規範或完成之建議、推薦或提示。舉例而言,當偵測到一觸發器(諸如在“X.”中之一點("."))時,可產生一下拉式方塊、選單或諸如此類,其中包含完成推薦。建議標識元件310提供一用於作為類型之一函式產生建議之機制。舉例而言,對於一“字串”(String)類型,該建議標識元件310可返回該類別或類型之成員,其中包含一特性“長度”(length)及/或方法“compare()”及“concatenate()”,等等。
由於在某些情況下若干類型被辨識為潛在靜態類型,且該組潛在成員很大,可使用排序。特定而言,排序組件 320可為藉由元件310提供之建議決定及提供一相關程度排序。篩選器元件330可隨後用於作為其排序之一函式篩選結果,以促進提供最相關的資訊。排序可作為任何及/或所有相關資訊(包含與一類型及/或關聯建議相關之資訊)之一函式而產生。舉例而言,該排序元件320可決定或推斷條件可能性。在目前示例中,如果一條件“某條件”(SomeCondition)為真之可能大於為假之可能,則“字串”(String)類型及關聯建議在相關程度上排序可比類型“按鈕”(Button)更高。在另一實施例中,排序可與以前之選擇有關。在此,如果為一使用者展示一情況及為陳述式完成選擇一特定成員,且該情況再次出現,排序則可能受以前選擇之影響。再者,類似設定檔資訊,目前及/或以前運行可用於影響排序。類似地,程式設計師設定檔資訊可用於排序計算中。舉例而言,可能瞭解一程式設計師對特定類型之偏好高於其他類型。另外,程式範圍,更特定而言,範圍中之類型,可用於決定相關程度。
展示元件340控制如何向使用者展示輔助。該展示元件340可利用來自建議元件310、排序元件320及/或篩選器元件330之資訊,來以一可能最有助於使用者之方式提供輔助。舉例而言,該展示元件340可按相關程度順序提供一預定數目之建議。進一步地或替代性地,排序資訊可與建議一起提供。再此外,一所決定之精確類型(例如,經由設計時執行)可被辨識為此等及/或分離自大致類型(例如,經由靜態分析)。另外,該展示元件可展示一選項, 以將一動態類型轉換為一靜態類型,如以下進一步之詳細說明。
第4圖描繪根據所主張標的之一態樣之一程式開發系統400。類似於第1圖之系統100,該系統400包含一動態類型元件110及一輔助元件120,如上所述。簡而言之,該動態類型元件110可在設計時決定或推斷動態類型,該輔助元件400將其用於在程式規範中經由諸如自動編碼完成等等機制來輔助開發人員。
設計時動態類型決定或推斷可係計算密集的。相應地,最佳化元件410可用於輔助處理。該最佳化元件410可利用一或多個處理序最佳化機制,其包含在本項技術中習知之某些機制。舉例而言,該最佳化元件410可在資料儲存區420中快取識別之類型及/或建議。舉例而言但非限制,該最佳化元件410可快取最頻繁使用及/或最可能使用之類型及/或關聯輔助(例如,預測快取)。然後可調整處理,以在任何決定之前,首先檢查最佳化元件410且更特定而言資料儲存區420,以避免重複工作。
進一步地或替代性地,可以一類似於藉由資料庫及搜尋引擎使用之方式對類型及/或輔助資訊進行索引,以允許便捷擷取適當資訊。相應地,最佳化元件410可用於儲存及/或擷取在資料儲存區420中索引及容納之資訊。
參照第5圖,圖解說明程式開發系統500。依據本揭示案之一態樣,可以一支援靜態及動態類型及/或其一混合之語言開發程式碼。因此,系統500允許作為早期繫結及 晚期繫結類型之一函式提供輔助。這在程式開發中提供了高度的靈活性,原因在於為靜態及動態類型均可提供輔助。
特定而言,該系統500包含該動態類型元件110及輔助元件120,如上所述。此外,該系統包含一靜態類型元件510,其在通訊上耦接至該輔助元件120。該靜態類型元件510識別、決定或推斷靜態或早期繫結類型,並將其提供給該輔助元件120。然後,除動態類型之外,該輔助元件120還可作為靜態類型之一函式提供可程化輔助及/或回饋。舉例而言,在某些情況中開發人員認為靜態類型之類型安全價值高於動態類型靈活性之價值。
更具體而言,一回饋可基於明確宣告類型及/或推斷靜態類型。舉例而言,考慮以下例示性早期繫結編碼片斷“Dim X='Hello'”及“Dim X As String='Hello'”。在任一情況下,“X”具有靜態類型“字串”(String)。因此,規範“X.”(X“點”)可致使該輔助元件120識別“字串”(String)類型之成員以用於編碼完成,成員包含“長度”(length)、“compare()”及“concatenate()”,以及其他。
第6圖圖解說明一程式開發系統600,其支援早期與晚期繫結建構之間之自動重構。類似於第5圖之系統500,系統600包含該動態類型元件110、輔助元件120及靜態類型元件510。基於靜態及動態類型之輔助經由上述元件之可用性為靜態及動態建構之間之互動提供了機會。重構元件610提供一機制以自動修改編碼,舉例而言,以回應使用者選擇。本質上,重構元件610提供一精化,其中可 將一推測類型轉換為一更精確之類型。
在一實施例中,在選擇及/或規範一成員時可將一動態類型轉換為一靜態類型。舉例而言,考慮一藉由該輔助元件120作為一動態類型之一函式提供之成員清單。一旦自該清單選擇一成員,成員返回類型及成員接收器已知,該重構元件610可作為其一函式轉換相關建構。為方便起見,再次考慮以下展示之下一示例:Dim X As Object If SomeCondition X="Hello" Else X=new Button() End If
設想在此回圈之後添加“Dim Y=X.”及自一藉由輔助元件120提供之成員清單選擇“Length()”。在此處,可確定該長度方法之結果係一整數。相應地,該重構元件610可藉由在該動態呼叫附近插入一隱式轉換,自動將“Y”自晚期繫結轉換為早期繫結,以返回由使用者選擇之成員決定之靜態類型。舉例而言,如下所示:“Dim Y=CInt(X.Length())REM X Inferred as Integer”。或者,藉由首先如下所示轉換該接收器,該呼叫可變成一靜態呼叫:“Dim Y=Cstr(X).Length()REM X inferred as Integer”。在此等二情況中,此等轉換均可藉由一編譯器或類似元件在所產生程式碼中插入。
應瞭解,在某些情況中,一使用者可僅希望選擇一適用成員之名稱,但保持在一晚期繫結上下文中。這可藉由一使用者偏好及/或外顯/隱式宣告決定。舉例而言,該輔助元件120可呈現帶有一選項(諸如一選項按鈕)之成員,其中一使用者可選擇保留該晚期繫結上下文是否理想。
程式開發系統600以及其他類似系統允許一不同的更解釋性之程式設計過程。它允許開發人員使用大致類型推斷或決定以深入瞭解其程式。本質上,一編譯器或其他開發元件可提供複數個選項,一程式設計師可選擇及利用其中之選項來離開該晚期繫結全域,及進入一早期繫結環境或相反。在一實施例中,一晚期繫結建構(包含其所有靈活性)可重構為一更限制性之更安全的建構。
現轉向第7圖,依據所主張標的之一態樣圖解說明了一可延伸程式開發系統700。系統700包含與第5圖之系統500相同之元件,其包含該動態類型元件110、輔助元件120及靜態類型元件510。如前所述,此等元件可操縱以在設計時作為靜態及動態類型之一者或二者之一函式提供可程化輔助。應瞭解,該系統500可包含某些標準或預設功能。在系統700中另外提供延伸元件710,其在通訊上耦接至每一元件以允許其延伸。在一特定實現中,該延伸元件710可接受及使用藉由一外掛程式提供之外部功能。因此,系統700可稱為可延伸及/或可插入。舉例而言但非限制,針對提供輔助,一排序演算法可被插入該系統700及藉由該系統700使用。再此外,包含可能期望的成 員之中繼資料可插入該系統700。再此外,該延伸元件710可允許經由使用一網頁服務及/或至一資料庫之連接利用一網路之延伸。舉例而言,該延伸元件710可提供一機制,以允許該系統連接至及使用結構描述或其他中繼資料之一存放庫。
已經針對若干元件之間之互動對上述系統、架構及諸如此類進行了說明。應理解,此等系統及元件可包含其中指定之元件或子元件、某些該等指定元件或子元件及/或其他元件。子元件亦可作為在通訊上耦接至其他元件之元件而非包含於父元件內而實現。再此外,可將一或多個元件及/或子元件組合成單一元件以提供聚合功能。系統、元件及/或子元件之間之通信可根據一推及/或拉模型完成。該等元件亦可與一或多個其他元件交互,此等元件在本文中為了簡略之目的未予以具體說明,但為熟習此項技術者所習知。
此外,應瞭解,該等所揭示系統及方法之各種部分可包含仿真智慧、機器學習、或基於知識或規則的元件、子元件、處理序、裝置、方法,或機制(例如,支援向量機器、神經網路、專家系統、貝氏信賴網路、模糊邏輯、資料融合引擎,分類器…)或由其組成。此等元件,及其他元件,可自動化某些機制或處理序,藉此執行以使該等系統及方法之部分更具調適性以及更加有效及更智慧。舉例而言但非限制,該動態類型元件110可使用此等機制,用以在設計時自靜態資訊推斷動態類型。類似地,該輔助元 件120可使用類似機制以排序、篩選及/或展示輔助。
鑒於上述該等例示性系統,參考第8圖至第10圖之該等流程圖將更佳地瞭解可根據所揭示標的實施之方法。儘管為簡化說明之目的,將該等方法顯示及說明為一系列方塊,應理解及瞭解所主張標的不受該等方塊之順序之限制,原因在於某些方塊可以不同順序發生及/或與來自本文所描繪及說明內容之其他方塊並行發生。此外,為實施以下說明之該等方法,可能並非需要所有圖解說明之方塊。
參照第8圖,根據所主張標的之一態樣圖解說明一種促進程式開發系統800之方法。在參考數字810處,在設計時決定一與一晚期繫結建構相關聯之可能類型。在一實施例中,該決定可對應於自靜態資訊推斷大致類型,舉例而言經由靜態程式流分析及/或其他上下文資訊,諸如程式設計師設定檔、偏好、以前執行,諸如此類。根據一態樣,該組潛在晚期繫結類型係靜態類型之一超集。在另一實施例中,決定可與自設計時執行識別一精確類型相關。在數字820處,為在一開發環境內之晚期繫結呼叫提供回饋。換言之,作為一或多個決定類型之一函式提供可程化輔助。舉例而言,在規範諸如一點運算子(".")之一觸發器時,可向一程式設計師展示與精確及/或大致類型相關聯之成員。然後該程式可選擇一提供之成員以用於自動完成,繼續鍵入以縮小選擇範圍,及隨後呼叫自動完成或完全指定一所需成員。
第9圖描繪一種根據本發明之一態樣提供可程化輔助 900之方法。在參考數字910處,識別、決定、推斷或以其他方式查明可程化類型。在數字920處,分析一或多個類型以決定其對應於一動態類型之可能性。這可利用各種因數來決定。舉例而言,與自靜態控制流分析維斷之大致類型相比,自執行識別之精確類型更可能為動態類型。類似地,根據有關一程式及/或一程式設計師之上下文資訊,某些大致類型可比其他類型更有可能。在參考930處,識別匹配查明類型之至少一子集的成員。成員可對應於變數、欄位、方法、函式及/或諸如此類。此外,匹配成員可作為上下文之一函式篩選,諸如最頻繁使用的及/或最可能使用的。在參考數字940處,向一使用者展示成員。這對應於可程化輔助之一清單成員選項。此清單可以一對一程式設計師最有用之方式組織及展示。舉例而言,成員可按相關程度之順序作為類型及/或成員之一函式組織,其中更相關之建議首先展示,最少相關之建議最後展示。該展示亦可限制於前K條相關建議。再此外,建議、推薦、提示或諸如此類可使用相關程度分數標記及/或以在其基礎上之片斷或層描繪。舉例而言,一作為一精確類型之一函式之成員可自與大致類型相關聯之成員以圖形方式進行描繪。
參照第10圖,描繪一流程圖圖表,其顯示在晚期繫結與早期繫結上下文之間進行轉換之一方法1000。儘管晚期繫結及早期繫結世界可彼此獨立但相互類似,但根據一態樣其可互動。在參考數字1010處,提供動態類型輔助。舉 例而言,可提供清單成員輔助,其中列出複數個成員,以用於潛在選擇及自動編碼完成。在數字1020處,識別一選定成員。在參考數字1030處,決定是否提供自動編碼重構。此決定可基於重構是否可能及/或有益於及/或使用允許或限制此等功能之偏好,等等。如果在數字1030處決定不需要重構,則該方法中止即可。否則,該方法可在數字1040處繼續,其中一動態呼叫可被轉換,以便根據一選定成員返回一靜態類型。以此方式,程式設計師可利用隨其提供之動態類型及輔助,以一解釋性之靈巧方式進行編碼。選擇特定成員時,部分該編碼可自動重構為靜態類型,藉此提供改良之編碼安全及有效執行。
如在此之所使用,該等術語“元件”、“系統”及諸如此類意欲指一電腦相關實體,其為硬體、硬體及軟體之一組合、軟體,或執行中之軟體。舉例而言,一元件可為,但並不限於,在一處理器上之一處理序運行、一處理器、一物件、一實施例、一可執行檔、一執行緒、一程式,及/或一電腦。藉由圖解說明之方式,一在一電腦上運行之應用程式及該電腦可能是一元件。一或多個元件可駐留在一處理序及/或執行緒內,且一元件可區域化在一電腦上及/或分散在兩個或兩個以上電腦之間。
該字元“例示性”在本文中用於指充當一範例、實施例或圖解說明。本文中說明為“例示性”之任何態樣或設計不必被視為相對其他態樣或設計較佳或有利。此外,實例僅出於清晰與瞭解之目的而提供,且不意欲以任何方式 限制本主題革新或其相關部分。應瞭解,本可展示無數其他或替代實例,但這些出於簡略之目的而被省略。
如在此所使用,該術語“推斷”或“推斷”大體上指自一組如經由事件及/或資料捕獲之觀察,推理或推斷該系統、環境,及/或使用者之狀態之過程。舉例而言,推斷可用於識別一特定上下文或動作,或可產生狀態之一機率分佈。該推斷可係機率性的-即,基於資料及事件之考慮計算一感興趣之狀態機率分佈。推斷亦可指用於自一組事件及/或資料合成高階事件之技術。此等推斷導致自一組觀測事件及/或儲存事件資料建構新的事件或動作,無論該事件是否以密切的暫時近似性相關聯,及該事件及資料是否來自一或若干事件及資料來源。各種分類方案及/或系統(例如,支援向量機器、神經網路、專家系統、貝氏信賴網路、模糊邏輯、資料融合引擎…)可結合執行與本主題革新關聯之自動及/或推斷動作一起使用。
此外,本主題革新之所有或部分可作為一方法、裝置或製造物而實現,其使用標準程式設計及/或工程技術以產生軟體、韌體、硬體,或其任何組合,來控制一電腦以實施本揭示革新。如在此所使用之該術語“製造物”意欲包含一電腦程式,其可存取自任何電腦可讀裝置或媒體。舉例而言,電腦可讀媒體可包含但不限於磁儲存裝置(例如,硬磁碟、軟磁碟、磁帶…)、光碟(例如,光碟(CD)、數位通用光碟(DVD)…)、智慧型卡,及快閃記憶體裝置(例如,卡、記憶棒、隨身碟…)。此外,應理解,一載波可用 於承載電腦可讀電子資料,諸如用於傳輸及接收電子郵件或在存取一諸如網際網路或一區域網路(LAN)之網路中之電腦可讀電子資料。當然,熟習此項技術者將認識到在所主張標的之範疇或精神內,可對此組態進行許多修改。
為了提供一用於所揭示標的之該等各種態樣之上下文,第11圖和第12圖以及以下討論意欲提供一適當環境之一簡單、一般性說明,在該環境中可實施所揭示標的之該等各種態樣。儘管以上已在一運行於一或多個電腦上之程式之電腦可執行指令之一般上下文中說明本標的,但熟習此項技術者將認識到本主題革新亦可與其他程式模組組合實施。大體上,程式模組包含執行特定任務及/或實施特定抽象資料類型之常式、程式、元件、資料結構等等。此外,熟習此項技術者將瞭解,該等系統/方法可使用其他電腦系統組態來實踐,該等其他電腦系統組態包含單一處理器、多處理器或多核處理器電腦系統、微型計算裝置、主機電腦,以及個人電腦、手持式計算裝置(例如,個人數位助理(PDA)、電話、手錶…)、基於微處理器的或可程式化消費者或工業電子產品,諸如此類。該等圖解說明態樣亦可實踐於分散式計算環境中,其中任務係藉由透過一通信網路連結之遠端處理裝置執行。然而,某些(若非所有)所主張標的之態樣可實踐於獨立式電腦上。在一分散式計算環境中,程式模組可位於區域及遠端記憶體儲存裝置中。
參照第11圖,一用於實施本文揭示之各種態樣之例示性環境1110包含一電腦1112(例如,桌上、膝上型、伺 服器、手持式裝置、可程式化消費者或工業電子產品…)。該電腦1112包含一處理單元1114、一系統記憶體1116及一系統匯流排1118。該系統匯流排1118耦接系統元件(包含,但不限於,該系統記憶體1116)至該處理單元1114。該處理單元1114可為任何各種可用微處理器。應瞭解,雙微處理器、多核及其他多處理器架構可用作該處理單元1114。
該系統記憶體1116包含揮發性及非揮發性記憶體。該基本輸入/輸出系統(BIOS),含有用以諸如在起動期間在該電腦1112內各元件之間傳送資訊之該等基本常式,其儲存於非揮發性記憶體中。藉由之方式圖解說明,但非限制,非揮發性記憶體可包含唯讀記憶體(ROM)。揮發性記憶體包含隨機存取記憶體(RAM),其可充當外部快取記憶體以促進處理。
電腦1112亦包含可移除/非可移除、揮發性/非揮發性電腦儲存媒體。第11圖圖解說明,舉例而言,大容量儲存器1124。大容量儲存器1124包含,但並不限於,類似一磁或光碟驅動機、軟磁碟驅動機、快閃記憶體或記憶體記憶棒之裝置。此外,大容量儲存器1124可包含單獨或與其他儲存媒體組合之儲存媒體。
第11圖提供軟體應用程式1128,其在使用者及/或其他電腦與適當操作環境1110中說明之該等基本電腦資源之間充當一中間媒介。此等軟體應用程式1128包含系統及應用軟體之一者或二者。系統軟體可包含一作業系統,其 可儲存在大容量儲存器1124上,該作業系統動作以控制及分派該電腦系統1112之資源。應用軟體通過儲存於系統記憶體1116及大容量儲存器1124之一者或二者上之程式模組及資料,利用藉由系統軟體對資源之管理。
該電腦1112亦包含一或多個介面元件1126,該(等)元件在通訊上耦接至該匯流排1118並促進與該電腦1112之互動。舉例而言,該介面元件1126可能是一埠(例如,串列、平行、個人電腦記憶卡國際協會、USB、FireWire…)或一介面卡(例如,聲音、視訊、網路…),諸如此類。該介面元件1126可接收輸入及提供輸出(有線或無線)。舉例而言,輸入可接收自以下裝置,其包含但不限於,一諸如一滑鼠之指標裝置、軌跡球、尖筆、觸模墊、鍵盤、麥克風、操縱桿、遊戲墊、衛星碟、掃瞄器、攝影機、其他電腦,諸如此類。輸出亦可藉由該電腦1112經由介面元件1126提供至輸出裝置。輸出裝置可包含顯示器(例如,陰極射線管顯示器、液晶顯示器、電漿顯示器…)、揚聲器、印表機及其他電腦,等等。
第12圖係一範例計算環境1200之示意方塊圖,本主題革新可與該計算環境互動。該系統1200包含一或多個用戶端1210。該(等)用戶端1210可為硬體及/或軟體(例如,執行緒、處理序、計算裝置)。該系統1200亦包含一或多個伺服器1230。因此,系統1200可對應於一兩層用戶端伺服器模型或一多層模型(例如,用戶端、中間層伺服器、資料伺服器),以及其他模型。該(等)伺服器1230 亦可為硬體及/或軟體(例如,執行緒、處理序、計算裝置)。舉例而言,該等伺服器1230可容納執行緒以藉由使用本主題革新之該等態樣執行轉換。一用戶端1210與一伺服器1230之間之一可能通信可以兩個或兩個以上電腦處理序之間傳輸之一資料封包之形式。
該系統1200包含一通信架構1250,其可用於促進該(等)用戶端1210與該(等)伺服器1230之間之通信。該(等)用戶端1210可操縱地連接至一或多個用戶端資料儲存區1260,其可用於儲存該(等)用戶端1210之區域資訊。類似地,該(等)伺服器1230可操縱地連接至一或多個伺服器資料儲存區1240,其可用於儲存該等伺服器1230之區域資訊。
舉例而言,程式可在一用戶端1210上開發,其被分散以便經由一用戶端1210及或伺服器1230在其他用戶端1210上執行。此外,在一用戶端上執行之一程式開發環境可利用該通信架構1250與一遠端伺服器1230交互,以獲取諸如結構描述之中繼資料,來允許提供諸如成員標識之相關輔助。類似地,排序演算法或諸如此類可跨越該通信架構1250下載自一伺服器1230或其他用戶端1210,以變更所提供輔助之方式及/或類型。
以上所述包含所主張標的之態樣的實例。當然,出於說明所主張標的之目的,不可能說明每一可想像之元件或方法組合,但在本項技術中之一普通技藝者可認識到所揭示標的之許多此外可能組合及排列。相應地,所揭示標的 意欲包括落入隨附申請專利範圍之精神與範疇內之所有此等改變、修改及變化。此外,就該術語“包含”、“具有”(hasing)或其形式上之變化用於“實施方式”或該等申請專利範圍而言,此等術語意欲為包含性的,其以一類似於該術語“包括”之方式,如“包括”在用作一申請專利範圍中之一及物字時之解釋。
100‧‧‧程式開發系統
110‧‧‧動態類型元件
120‧‧‧輔助元件
210‧‧‧靜態分析元件
220‧‧‧執行分析元件
320‧‧‧排序元件
330‧‧‧篩選器元件
310‧‧‧建議標識符元件
340‧‧‧展示元件
400‧‧‧程式開發系統
410‧‧‧最佳化元件
420‧‧‧資料儲存區
500‧‧‧程式開發系統
510‧‧‧靜態類型元件
600‧‧‧程式開發系統
610‧‧‧重構元件
700‧‧‧可延伸程式開發系統
710‧‧‧延伸元件
800‧‧‧程式開發系統
1110‧‧‧環境
1128‧‧‧應用程式
1112‧‧‧電腦
1114‧‧‧處理單元
1118‧‧‧系統匯流排
1116‧‧‧系統記憶體
1124‧‧‧大容量儲存器
1126‧‧‧介面元件
1200‧‧‧計算環境
1210‧‧‧用戶端
1230‧‧‧伺服器
1240‧‧‧伺服器資料儲存區
1260‧‧‧用戶端資料儲存區
1250‧‧‧通信架構
第1圖係根據所主張標的之一態樣之一程式開發系統之方塊圖。
第2圖係一代表性動態類型組件之方塊圖。
第3圖係一代表性輔助組件之方塊圖。
第4圖係一最佳化程式開發系統之方塊圖。
第5圖係一為靜態及動態類型提供輔助之程式開發系統之方塊圖。
第6圖係一支援自動重構之程式開發系統600之方塊圖。
第7圖係一可延伸程式開發系統之方塊圖。
第8圖係一促進程式開發之方法之流程圖圖表。
第9圖係一提供可程化輔助之方法之流程圖圖表。
第10圖係一在晚期繫結與早期繫結上下文之間進行轉換之方法之流程圖圖表。
第11圖係一圖解說明本揭示案之各態樣之一適當操作環境之示意方塊圖。
第12圖係一範例計算環境之示意方塊圖。
100‧‧‧程式開發系統
110‧‧‧動態類型元件
120‧‧‧輔助元件

Claims (20)

  1. 一種整合式程式開發系統,其包括:一動態類型元件,藉由使用靜態資訊近似晚期繫結動態類型式可程化建構(late bound,dynamically-typed programmatic constructs),該動態類型元件識別該等晚期繫結動態類型式可程化建構的一或更多個候選類型(candidate type);及一輔助元件,根據該等所識別候選類型之函數關係,在一程式碼編輯器中提供該等晚期繫結動態類型式可程化建構的可程化建議(programmatic suggestion),以促進程式規範,其中該等可程化建議中之至少一者識別匹配一候選類型的一成員,該成員為與代表一類別(class)的原始碼有關的一運算子建構,該運算子建構指示一或更多個成員類型作為晚期繫結類型解析(resolution)之可能的候選,該一或更多個可能的成員類型係由該輔助元件所顯示,以作為在該整合式程式開發系統內的選擇。
  2. 如申請專利範圍第1項所述之系統,該動態類型元件執行該程式之靜態分析,以識別該等晚期繫結建構之可能類型。
  3. 如申請專利範圍第1項所述之系統,經由該程式之設計時執行,該動態類型元件識別一晚期繫結建構之一精確類型。
  4. 如申請專利範圍第1項所述之系統,更包括一靜態類型元件,該靜態類型元件識別早期繫結可程化建構之類 型作為由該輔助元件的使用。
  5. 如申請專利範圍第1項所述之系統,更包括一篩選器元件,該篩選器元件將所提供建議限制於一預定數目之最相關的建議。
  6. 如申請專利範圍第5項所述之系統,更包括一排序元件,根據所關聯類型為正確的可能性之函數關係,對每一建議之相關程度進行排序。
  7. 如申請專利範圍第5項所述之系統,至少一個建議識別匹配一候選類型之一成員。
  8. 如申請專利範圍第1項所述之系統,更包括一最佳化元件,該最佳化元件保持該等候選類型及(或)該等所關聯建議以最佳化執行。
  9. 如申請專利範圍第1項所述之系統,更包括一重構元件,根據選擇及(或)規範一成員,該重構元件將一動態類型轉換為一靜態類型。
  10. 如申請專利範圍第1項所述之系統,更包括一延伸元件,該延伸元件增加或修改該動態類型元件及(或)該輔助元件之行為。
  11. 一種輔助物件導向程式開發之方法,該方法包括下列步驟:藉由使用靜態資訊來近似一動態類型式晚期繫結呼叫(call),在設計時決定該動態類型式晚期繫結呼叫之一接收器之至少一個類型;及顯示該所決定動態類型之一組成員給一程式設計師以 用於選擇及自動編碼完成(automatic code completion),該自動編碼完成包含自動地完成該所決定動態類型的動態類型式晚期繫結呼叫,其中提供一或更多個可程化建議,該一或更多個可程化建議識別匹配一候選類型的一成員,該成員為與代表一類別的原始碼有關的一運算子建構,該運算子建構指示一或更多個成員類型作為晚期繫結類型解析的可能的候選,顯示該一或更多個可能的成員類型,以在物件導向程式開發期間在設計時由一使用者所選擇。
  12. 如申請專利範圍第11項所述之方法,該方法包括對程式碼執行靜態分析,以推斷該類型。
  13. 如申請專利範圍第11項所述之方法,該方法包括從設計時程式碼執行識別該類型。
  14. 如申請專利範圍第11項所述之方法,其中依照由該類型為正確的可能性所決定之相關程度之順序,來顯示該等成員。
  15. 如申請專利範圍第14項所述之方法,該方法更包括指示從一精確類型及(或)推測類型所衍生之成員。
  16. 如申請專利範圍第11項所述之方法,該方法更包括從一快取擷取該至少一個類型及(或)成員。
  17. 如申請專利範圍第11項所述之方法,該方法更包括使用一索引,以識別該類型之成員。
  18. 如申請專利範圍第11項所述之方法,該方法更包括根據一選定成員之一函數關係,以一靜態呼叫替換一動態呼叫。
  19. 一種促進用於在一程式碼編輯環境內所開發的一程式的程式規範之系統,包括:一處理器;用於藉由使用靜態資訊來近似動態類型式晚期繫結呼叫來在設計時決定該等動態類型式晚期繫結呼叫之一或更多個可能類型的構件;及用於在一程式碼編輯器內顯示匹配該一或更多個所決定類型之該所決定動態類型之成員的構件,其中提供一或更多個可程化建議,該一或更多個可程化建議識別匹配一候選類型的一成員,該成員為與代表一類別的原始碼有關的一運算子建構,該運算子建構指示一或更多個成員類型作為晚期繫結類型解析的可能的候選,該一或更多個可能的成員類型被顯示,以作為在程式開發期間在設計時由一使用者所選擇。
  20. 如申請專利範圍第19項所述之系統,該系統更包括用於決定一或更多個靜態類型的構件。
TW097117725A 2007-06-21 2008-05-14 用於晚期繫結可程式化輔助的系統與方法 TWI493464B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/766,347 US8321836B2 (en) 2007-06-21 2007-06-21 Late bound programmatic assistance

Publications (2)

Publication Number Publication Date
TW200901037A TW200901037A (en) 2009-01-01
TWI493464B true TWI493464B (zh) 2015-07-21

Family

ID=40137833

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097117725A TWI493464B (zh) 2007-06-21 2008-05-14 用於晚期繫結可程式化輔助的系統與方法

Country Status (7)

Country Link
US (1) US8321836B2 (zh)
EP (1) EP2174216B1 (zh)
JP (1) JP5264898B2 (zh)
CN (1) CN101689112B (zh)
BR (1) BRPI0812127A2 (zh)
TW (1) TWI493464B (zh)
WO (1) WO2009002683A2 (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8473971B2 (en) 2005-09-06 2013-06-25 Microsoft Corporation Type inference and type-directed late binding
US20080320453A1 (en) * 2007-06-21 2008-12-25 Microsoft Corporation Type inference and late binding
US9170787B2 (en) * 2008-06-27 2015-10-27 Microsoft Technology Licensing, Llc Componentization of compiler functionality
US20090328001A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Unloadable managed code
US9135948B2 (en) 2009-07-03 2015-09-15 Microsoft Technology Licensing, Llc Optical medium with added descriptor to reduce counterfeiting
US20100235730A1 (en) * 2009-03-13 2010-09-16 Microsoft Corporation Consume-first mode text insertion
US8799877B2 (en) * 2009-03-27 2014-08-05 Optumsoft, Inc. Interpreter-based program language translator using embedded interpreter types and variables
US8533669B2 (en) 2009-04-21 2013-09-10 Microsoft Corporation Analysis of dynamic elements in bounded time
US9075667B2 (en) * 2009-05-21 2015-07-07 Microsoft Technology Licensing, Llc Dynamic binding directed by static types
JP4912452B2 (ja) * 2009-11-27 2012-04-11 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的型付け言語で記述されたソースコードを静的型付け言語で記述されたターゲットコードに変換し、実行する方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム
US8429200B2 (en) * 2010-02-02 2013-04-23 Red Hat, Inc. Using a separate process in an interactive computer programming environment as a database
US20110271258A1 (en) * 2010-04-30 2011-11-03 Microsoft Corporation Software Development Tool
US20110271250A1 (en) * 2010-04-30 2011-11-03 Microsoft Corporation Software Development Tool
US8572591B2 (en) * 2010-06-15 2013-10-29 Microsoft Corporation Dynamic adaptive programming
US9195810B2 (en) * 2010-12-28 2015-11-24 Microsoft Technology Licensing, Llc Identifying factorable code
US8997069B2 (en) * 2011-04-13 2015-03-31 Microsoft Technology Licensing, Llc API descriptions
US9256401B2 (en) 2011-05-31 2016-02-09 Microsoft Technology Licensing, Llc Editor visualization of symbolic relationships
US9383973B2 (en) * 2011-06-29 2016-07-05 Microsoft Technology Licensing, Llc Code suggestions
US9542168B2 (en) 2011-11-10 2017-01-10 Microsoft Technology Licensing Llc Hostable compiler utilizing type information from a host application
US8869106B2 (en) * 2011-12-16 2014-10-21 Microsoft Corporation Language service provider management using application context
US9032378B2 (en) * 2011-12-16 2015-05-12 Microsoft Technology Licensing, Llc Available symbol set generation using untyped variable
US9170782B2 (en) * 2012-03-27 2015-10-27 Microsoft Technology Licensing, Llc Extensible mechanism for providing suggestions in a source code editor
US8843890B2 (en) * 2012-05-10 2014-09-23 International Business Machines Corporation System and method for transplanting source code
US10606569B2 (en) * 2013-06-02 2020-03-31 Microsoft Technology Licensing, Llc Declarative configuration elements
US9244658B2 (en) 2013-06-04 2016-01-26 Microsoft Technology Licensing, Llc Multi-step auto-completion model for software development environments
US9329849B2 (en) * 2013-08-26 2016-05-03 Facebook, Inc. Systems and methods for converting typed code
US11188308B2 (en) * 2014-07-23 2021-11-30 Apple Inc. Interactive code editing
US9678746B2 (en) * 2014-07-31 2017-06-13 International Business Machines Corporation Coding convention discovery and enforcement
US10261766B2 (en) * 2014-08-28 2019-04-16 Hewlett Packard Enterprise Development Lp Sloppy feedback loop compilation
US10114627B2 (en) * 2014-09-17 2018-10-30 Salesforce.Com, Inc. Direct build assistance
CN104657658A (zh) * 2015-02-13 2015-05-27 深圳酷派技术有限公司 一种安装应用的方法及终端
CN107515739B (zh) * 2016-06-16 2021-02-26 斑马智行网络(香港)有限公司 提高代码执行性能的方法及装置
US10162605B2 (en) * 2016-07-20 2018-12-25 Microsoft Technology Licensing, Llc Code snippet content recommendation to define an object literal
US10503478B2 (en) * 2017-02-14 2019-12-10 Hcl Technologies Limited System and method for guiding a user in a software development lifecycle using machine learning
CN108920149B (zh) * 2017-03-29 2020-12-08 华为技术有限公司 编译方法和编译装置
US11243750B2 (en) 2018-01-21 2022-02-08 Microsoft Technology Licensing Llc Code completion with machine learning
US10990358B2 (en) 2018-03-29 2021-04-27 Microsoft Technology Licensing, Llc. Code completion for overloaded methods
US11645576B2 (en) 2018-04-29 2023-05-09 Microsoft Technology Licensing, Llc. Code completion for languages with hierarchical structures
CN114416104B (zh) * 2022-03-30 2022-08-09 清华大学 一种结构化数据文件处理方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5500881A (en) * 1993-07-12 1996-03-19 Digital Equipment Corporation Language scoping for modular, flexible, concise, configuration descriptions
US5872973A (en) * 1995-10-26 1999-02-16 Viewsoft, Inc. Method for managing dynamic relations between objects in dynamic object-oriented languages
US6237135B1 (en) * 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US20040098731A1 (en) * 2002-11-19 2004-05-20 Demsey Seth M Native code exposing virtual machine managed object
TW200539025A (en) * 2003-12-24 2005-12-01 Intel Corp Method and apparatus to improve execution of a stored program
US20060031263A1 (en) * 2004-06-25 2006-02-09 Yan Arrouye Methods and systems for managing data
TW200634557A (en) * 2005-03-22 2006-10-01 Microsoft Corp Operating system program launch menu search

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5488727A (en) 1991-09-30 1996-01-30 International Business Machines Corporation Methods to support multimethod function overloading with compile-time type checking
US5485615A (en) 1992-06-10 1996-01-16 Telefonaktiebolaget L M Ericsson System and method of interactively developing desired computer programs by using plurality of tools within a process described in graphical language
JP3178151B2 (ja) 1993-03-19 2001-06-18 富士ゼロックス株式会社 オブジェクト指向言語のメッセージコンパイル装置
US5748961A (en) 1993-07-12 1998-05-05 Digital Equipment Corporation Efficient method and apparatus for compiling and linking modules of computer code in a large software system
US6425124B1 (en) 1993-11-08 2002-07-23 Matsushita Electric Industrial Co. Ltd. Resource allocation device for reducing the size and run time of a machine language program
US5742828A (en) 1994-08-03 1998-04-21 Microsoft Corporation Compiler and method for evaluation of foreign syntax expressions in source code
US5692195A (en) 1994-08-31 1997-11-25 International Business Machines Corporation Parent class shadowing
US5748963A (en) 1995-05-12 1998-05-05 Design Intelligence, Inc. Adaptive binding
US5687377A (en) 1995-10-06 1997-11-11 Electronic Data Systems Corporation Method for storing variables in a programming language
US6072950A (en) 1996-06-18 2000-06-06 Microsoft Corporation Pointer analysis by type inference combined with a non-pointer analysis
US6041179A (en) 1996-10-03 2000-03-21 International Business Machines Corporation Object oriented dispatch optimization
JPH10124325A (ja) 1996-10-25 1998-05-15 Toshiba Corp 変数の最適配置方法、変数の最適配置装置及び変数の最適配置プログラムを格納したコンピュータ読み取り可能な記録媒体
US6134708A (en) 1997-02-13 2000-10-17 Nec Corporation Program compilation execution system
US5842220A (en) * 1997-05-02 1998-11-24 Oracle Corporation Methods and apparatus for exposing members of an object class through class signature interfaces
US6026233A (en) 1997-05-27 2000-02-15 Microsoft Corporation Method and apparatus for presenting and selecting options to modify a programming language statement
US6314559B1 (en) 1997-10-02 2001-11-06 Barland Software Corporation Development system with methods for assisting a user with inputting source code
CA2219557C (en) 1997-10-29 2002-12-10 Ibm Canada Limited-Ibm Canada Limitee Run-time instrumentation for object oriented programmed applications
US5983021A (en) 1998-05-27 1999-11-09 Sun Microsystems Dynamically switching statically bound function calls to dynamically bound function calls without recompilation
US6018628A (en) 1998-06-16 2000-01-25 Sun Microsystems, Inc. Method of implementing parameterized types to be compatible with existing unparameterized libraries
US6915301B2 (en) 1998-08-25 2005-07-05 International Business Machines Corporation Dynamic object properties
US6415316B1 (en) 1998-09-01 2002-07-02 Aidministrator Nederland B.V. Method and apparatus for implementing a web page diary
US6502233B1 (en) 1998-11-13 2002-12-31 Microsoft Corporation Automated help system for reference information
US7137069B2 (en) 1998-12-18 2006-11-14 Tangis Corporation Thematic response to a computer user's context, such as by a wearable personal computer
US6842877B2 (en) 1998-12-18 2005-01-11 Tangis Corporation Contextual responses based on automated learning techniques
US6678745B1 (en) 1999-06-01 2004-01-13 Bruce Hodge Dynamic object synthesis with automatic late binding
US6560774B1 (en) 1999-09-01 2003-05-06 Microsoft Corporation Verifier to check intermediate language
US6981249B1 (en) * 2000-05-02 2005-12-27 Microsoft Corporation Methods for enhancing type reconstruction
US6957394B1 (en) 2000-12-01 2005-10-18 Microsoft Corporation Rendering controls of a web page according to a theme
US7437710B2 (en) 2001-07-02 2008-10-14 Bea Systems, Inc. Annotation based development platform for stateful web services
US7120897B2 (en) 2001-07-10 2006-10-10 Microsoft Corporation User control objects for providing server-side code generation from a user-defined dynamic web page content file
US6928425B2 (en) 2001-08-13 2005-08-09 Xerox Corporation System for propagating enrichment between documents
US20030131347A1 (en) 2001-10-12 2003-07-10 Allison David S. Method and apparatus for runtime binding of object members
US20030097648A1 (en) * 2001-10-12 2003-05-22 Allison David S. Method and apparatus for determining runtime size and type information in dynamically typed languages
US6965990B2 (en) 2001-10-23 2005-11-15 International Business Machines Corporation Method and apparatus for providing programming assistance
US7418484B2 (en) * 2001-11-30 2008-08-26 Oracle International Corporation System and method for actively managing an enterprise of configurable components
US7152229B2 (en) 2002-01-18 2006-12-19 Symbol Technologies, Inc Workflow code generator
US7017117B2 (en) 2002-02-14 2006-03-21 Symantec Corporation Attenuating and amplifying user interface themes
US7127707B1 (en) 2002-10-10 2006-10-24 Microsoft Corporation Intellisense in project upgrade
US7051322B2 (en) 2002-12-06 2006-05-23 @Stake, Inc. Software analysis framework
US8032860B2 (en) * 2003-02-26 2011-10-04 Oracle International Corporation Methods for type-independent source code editing
US7246361B1 (en) 2003-03-20 2007-07-17 Intuit, Inc. Supporting multiple late binding objects with the same identifier
US7389498B2 (en) 2003-03-25 2008-06-17 Microsoft Corporation Core object-oriented type system for semi-structured data
US7620959B2 (en) 2003-05-12 2009-11-17 Microsoft Corporation Reflection-based processing of input parameters for commands
US7197702B2 (en) 2003-06-13 2007-03-27 Microsoft Corporation Web page rendering mechanism using external programmatic themes
US8307109B2 (en) 2003-08-27 2012-11-06 International Business Machines Corporation Methods and systems for real time integration services
AU2004281008A1 (en) 2003-10-10 2005-04-21 Humanizing Technologies, Inc Clustering based personalized web experience
WO2005038610A2 (en) 2003-10-14 2005-04-28 Donn Delson A method and system for using cascading style sheets (css) to customize an online store
US7676798B2 (en) 2003-10-24 2010-03-09 Microsoft Corporation Mechanism for obtaining and applying constraints to constructs within an interactive environment
US20050198177A1 (en) 2004-01-23 2005-09-08 Steve Black Opting out of spam
US20050278695A1 (en) 2004-06-14 2005-12-15 Synovic Michael J System and method for modifying code assist within an integrated development environment
US20060015817A1 (en) 2004-07-15 2006-01-19 Giuseppe Fioretti Method to dynamically customize a web user interface
GB0416867D0 (en) 2004-07-29 2004-09-01 Ibm Automatic content completion of valid values for method argument variables
US7676476B2 (en) * 2004-08-25 2010-03-09 Microsoft Corporation Data types with incorporated collation information
US7571189B2 (en) 2005-02-02 2009-08-04 Lightsurf Technologies, Inc. Method and apparatus to implement themes for a handheld device
US7730448B2 (en) 2005-08-11 2010-06-01 Microsoft Corporation Layered type systems
US8473971B2 (en) 2005-09-06 2013-06-25 Microsoft Corporation Type inference and type-directed late binding
WO2007084780A2 (en) 2006-01-20 2007-07-26 Aptana, Inc. Type inference system and method
US8225294B2 (en) 2006-04-27 2012-07-17 Oracle America, Inc. Method and apparatus for expressing and checking relationships between types
US20080320453A1 (en) 2007-06-21 2008-12-25 Microsoft Corporation Type inference and late binding

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5500881A (en) * 1993-07-12 1996-03-19 Digital Equipment Corporation Language scoping for modular, flexible, concise, configuration descriptions
US5872973A (en) * 1995-10-26 1999-02-16 Viewsoft, Inc. Method for managing dynamic relations between objects in dynamic object-oriented languages
US6237135B1 (en) * 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US20040098731A1 (en) * 2002-11-19 2004-05-20 Demsey Seth M Native code exposing virtual machine managed object
TW200539025A (en) * 2003-12-24 2005-12-01 Intel Corp Method and apparatus to improve execution of a stored program
US20060031263A1 (en) * 2004-06-25 2006-02-09 Yan Arrouye Methods and systems for managing data
TW200634557A (en) * 2005-03-22 2006-10-01 Microsoft Corp Operating system program launch menu search

Also Published As

Publication number Publication date
EP2174216A4 (en) 2012-01-25
WO2009002683A3 (en) 2009-02-26
WO2009002683A2 (en) 2008-12-31
BRPI0812127A2 (pt) 2014-11-18
EP2174216B1 (en) 2019-04-03
CN101689112B (zh) 2014-06-11
US8321836B2 (en) 2012-11-27
JP2010530590A (ja) 2010-09-09
US20080320444A1 (en) 2008-12-25
JP5264898B2 (ja) 2013-08-14
EP2174216A2 (en) 2010-04-14
CN101689112A (zh) 2010-03-31
TW200901037A (en) 2009-01-01

Similar Documents

Publication Publication Date Title
TWI493464B (zh) 用於晚期繫結可程式化輔助的系統與方法
US7865870B2 (en) Automatic content completion of valid values for method argument variables
US7127707B1 (en) Intellisense in project upgrade
US8473971B2 (en) Type inference and type-directed late binding
JP5592591B2 (ja) アイテム間のリレーションシップの生成、およびアイテムのナビゲートをするためのシステム
US9524279B2 (en) Help document animated visualization
CN107704382B (zh) 面向Python的函数调用路径生成方法和系统
US20110271258A1 (en) Software Development Tool
US20200210158A1 (en) Automated or machine-enhanced source code debugging
US20110271250A1 (en) Software Development Tool
US20090328016A1 (en) Generalized expression trees
JP2010097426A (ja) コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法
KR20190015285A (ko) Cpu 이용 및 코드 리팩토링을 위한 쿼리 최적화기
US20130145343A1 (en) Workspace model for interrelated projects
US20100010801A1 (en) Conflict resolution and error recovery strategies
Kurniawan Java for Android
Hunt Beginner's Guide to Kotlin Programming
Jana C++ and object-oriented programming paradigm
AU2020273724A1 (en) System and method of computer-assisted computer programming
McGrath C# Programming in easy steps: Updated for Visual Studio 2019
JP2003050722A (ja) プログラム解析システムとプログラム解析方法
CN112199097B (zh) 安装包生成方法、装置、计算机设备和存储介质
Kurs et al. Nextflow Workbench Documentation Booklet
CN117312438A (zh) 数据处理方法、电子设备及可读存储介质
Sänger et al. Large Language Models to the Rescue: Reducing the Complexity in Scientific Workflow Development Using ChatGPT

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees