編程學習小結(2)編程需要哪些基礎知識

編碼這麼久,編碼需要哪些基礎知識呢?有人說“貌似不需要什麼基礎知識?我們公司只要是大學畢業,不管什麼專業,在我們這搞一段時間都可以做的很好!”。的確很多公司,尤其是大公司,培訓流程相對完善,工作流程也比較規範,無論是什麼專業,即使編程0基礎,在公司學習一段時間,掌握一些編碼基礎知識和編程規範後,隨着對業務流程越來越熟悉,都可以做的很好,甚至比有基礎的同學還好~
這裏原因很多,很想聽聽大家的意見,從個人開發角度簡單來看,可以認爲進入公司後做技術也有兩個方向
1、業務流程:行業相關性稍強,是對公司所進行業務的掌握程度,通信如各種協議等
2、技術能力:相對通用,對非流程問題的解決能力,如內存被改寫,在業務上分析不出原因時,解決這類問題的能力

這裏同同學們分享的主要是第二條,相對通用的能力。

首先看一個簡單的問題:
在屏幕上輸出10次hello world!
如何寫:
方式 1、知道編程的同學
int main(int argc, char *argv[])
{
printf("hello world!"); printf("hello world!"); printf("hello world!"); printf("hello world!"); printf("hello world!"); printf("hello world!"); printf("hello world!"); printf("hello world!"); printf("hello world!"); printf("hello world!");
}
方式2、學過編程的同學
int main(int argc, char *argv[])
{
for(int i = 0; i < 10; ++i)
printf("hello world!");
}
方式3、某些同學
void out(int i)
{
if(i>1)
out(i-1);
printf("hello world!");
}
int main(int argc, char *argv[])
{
out(10);
}
對於上面的三種情況,提幾個問題
1、爲什麼每種方式都有一個main函數,有哪些寫法?
2、那種方式“較好”?
3、方式3有什麼優點麼?
……(歡迎提問)

問題1:爲什麼需要有這個main函數呢?
代碼是人和機器交流的橋樑,當你寫好一段代碼,在windows上編譯鏈接生成一個二進制的exe文件,它的內容是一條條機制指令,計算機加載這個文件開始執行;那麼,問題來了,A:計算機如何知道這個文件是一個二進制文件,保存的是機器指令呢?它同word文檔有什麼區別?B:計算機知道這是一個程序二進制文件之後,如何加載?從那一條指令開始執行呢?
A:感興趣的同學可以以文本的方式打開一個exe文件看下(直接將exe文件拖放到記事本中即可),會發現都是由MZ開頭,16進制是4D5A,它是window可執行文件的特定格式的開始(PE格式)感興趣的同學可以瞭解下。當系統遇到該格式時就按照PE格式的標準打開,加載,如何加載呢?(可以自行搜索下)
B:加載好了之後,從那一條指令開始執行呢?
對於C語言是由一個個函數組成,操作系統如何知道從哪一條指令開始執行來啓動程序呢?操作系統代用那個函數開始執行啊?main……,爲什麼是main呢?
這個mian函數怎麼寫呢?
在 C語言的早期標準C89中,main() 是可以是void類型。Brian W. Kernighan 和 Dennis M. Ritchie 的經典鉅著 The C programming Language(《C 程序設計語言》)用的就是void main( )。但最新的 C99 標準中,只有以下兩種定義方式是正確的:
int main( void )
int main( int argc, char *argv[] )
如果你不需要從命令行中獲取參數,請用 int main( void ) ;否則請用 int main( int argc, char *argv[] ) 。
main 函數的返回需要是 int ,這樣返回值才能傳遞給操作系統。 如果沒有寫 return 語句的話,C99 規定編譯器要自動在生成的目標文件中(如 exe 文件)加入 return 0 ,表示程序正常退出。但是加上return 0是個好習慣。
這裏涉及的知識有 操作系統、編譯,如期望進一步瞭解編程,這些方面最好掌握一些~

問題2:那種方式較好?
這個很難說,但是方式1很少見,在這裏很想聽聽小夥伴們的意見?

問題3:
這裏使用了簡單的遞歸算法,對於一些問題,使用該方式可以使代碼變得簡單,但是不是所有的語言都能夠支持

(未完待續)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章