我正在學習Perl,我遇到了一個問題。子程序和腳本之間的區別究竟是什麼?Perl中的子程序和腳本有什麼區別?
回答
A 腳本只是一個通常包含在單個文件中的(通常是簡短的)程序的名稱。這不是一個真正的科學術語,因此非常模糊 - 人們可以在討論3行快速程序或10000行代碼程序時參考「腳本」。
有些人將任何Perl程序稱爲「腳本」 - 請參閱下面的歷史原因。有些人說,「Perl腳本」與Perl「程序」相反時,意味着一個相對簡單,相對較短的程序,通常不需要使用任何子程序/類/其他代碼組織方法就可以構建。再次,沒有標準的定義。
另外,Perl程序經常被稱爲「腳本」的原因是Perl originally was used for writing scripts that perform work in Unix shell,shell腳本語言的使用方式。術語「scripting language」表示用於控制應用程序的語言,在這種情況下是Unix shell。當然,從那時起,Perl已經發展成爲一種完全成熟的編程語言,但是這個詞/術語仍然存在,有時被惰性使用,有時會被貶義。
subroutine甲(也稱爲程序,函數,例程,方法,或子程序)是執行特定任務和相對獨立於剩餘的碼的更大程序內的代碼的一部分。它通常意味着包含執行任務的代碼,這些代碼需要在程序中多次執行,甚至可以由多個程序執行。
一個子程序不是一個Perl特定的概念,雖然稱它爲「子程序」是用很少的語言(大多數使用術語函數,方法或過程)完成的。
作爲一個特殊的方面說明,一個「方法」 - 在Perl以及其它語言 - 是一個與面向對象的類或類的對象相關的子程序的一個特殊類型。事實上,它僅僅是一個子例程的特例,當然,事實突出表明 - 儘管deepest wishes by "Modern Perl" author chromatic - Perl 5中的方法是用「sub」關鍵字聲明的,與常規子例程相同。
如上所述,一些人,指的是一個Perl程序爲「腳本」的時候,意味着它不包含子程序(如任何足夠複雜,有一個子程序不再是「腳本「而是」程序「)。但這不是一個被接受的或正式的定義 - 正如所述,不是什麼腳本的定義,每個人都使用任何他們想要的方式。
- 1. Perl中的'eq'和'=〜'有什麼區別?
- 2. Javascript和ECMA腳本有什麼區別?
- 3. Perl中'for'和'foreach'有什麼區別?
- 4. Perl中grep和map有什麼區別?
- 5. 叉子和線程有什麼區別?
- 6. 腳本編寫時,#!/ usr/bin/perl和#!/ usr/bin/env perl有什麼區別?
- 7. 「perl test.pl」和「./test.pl」有什麼區別?
- 8. 在Strawberry Perl中,perl \ lib和perl \ site \ lib有什麼區別?
- 9. perl這兩個腳本之間有什麼區別
- 10. 編程語言和腳本語言有什麼區別?
- 11. GAS中的腳本和自定義函數有什麼區別?
- 12. shell腳本中的$ @和$ *有什麼區別?
- 13. 腳本標籤中的「lang」和「type」屬性有什麼區別?
- 14. shell腳本中的$ @和$ *有什麼區別?
- 15. MATLAB中的腳本和函數有什麼區別?
- 16. 標記,編碼,腳本,shell腳本和編程語言有什麼區別?
- 17. eclipse中運行php腳本和php網頁有什麼區別?
- 18. 有什麼區別`和$(Bash中有什麼區別?
- 19. 我的($ variableName)和我的$ variableName在Perl中有什麼區別?
- 20. Firebase - ref和孩子有什麼區別?
- 21. 帖子和頁面有什麼區別
- 22. 插座和襪子有什麼區別?
- 23. 函子和「泛型」有什麼區別
- 24. OpenCL中本地和全局內存區別有什麼區別?
- 25. Perl正則表達式中的\ 1和$ 1有什麼區別?
- 26. Perl中的open和sysopen有什麼區別?
- 27. Perl中的system,exec和反引號有什麼區別?
- 28. Perl中的對象和類之間有什麼區別?
- 29. Perl中的哈希和哈希引用有什麼區別?
- 30. C和Perl中的system()有什麼區別?
儘管有兩個含義,但「子程序」和「方法」不可互換。方法是與類和/或對象關聯的子例程。 – ikegami 2012-02-21 06:46:27
@ikegami - 在Perl中是正確的。我不確定其他語言 – DVK 2012-02-21 07:12:15
不只是Perl。方法是一個通用的OOP術語。我沒有聽說任何盜用它的語言。 – ikegami 2012-02-21 17:41:11