30歲現在開始C語言的學習晚?尋求各位大咖指明方向,謝謝!?
我是從事自動化生產軟體控制實施的,在軟體實施及使用中SQL使用非常多,所以想深入學習下資料庫方面的知識,但是各方面了解發現學習資料庫最好配合一門語言學習最好,正好工作也有這個需求,語言選擇C++,但是直接學C++從零基礎開始比較困難,準備從C語言開始,目前時間比較充裕,各位大咖有沒有這方面的經驗,以及目前C語言及C++在Windows或Mac下最簡單、適用的程序軟體,謝謝
我44歲,初中學歷,剛自學完高中數學,準備學習線性代數和離散數學,這一切都是為深入學習c++鋪路,c++學了不到四個月,為了開發自己的外匯自動交易系統,掌握了後還要學java和c#,準備入行遊戲業,年輕時就喜歡和電腦相關的東西以及夢想能自己開發遊戲,種種原因沒有學習編程。
現在剛學完c++primer plus,primer學了200多頁,我現在的想法是,如果我不去學,今生可能就沒機會學了,那樣我肯定會後悔一輩子的!
沒想到第一次回答就收到這麼多支持與鼓勵,真是受寵若驚,感謝各位,在這個浮躁的社會裡,知乎還是一個尊重知識的正能量的地方,補充回答一下。
總共買了大約60公斤書,其中感覺暫時學不到的發到了加拿大,44公斤,餘下的就剩這些自己也害怕陷入到形式主義中,也知道這麼多書可能都讀完不現實,到現在還不知道哪些有用,就當是摸索吧,我這個年齡肯定經歷過一些事,懂得無論幹什麼,沉下心,腳踏實地的走下去,半年後,一年後,兩年後,暮然回首,發現自己會已經走的很遠,成績會比自己想像的還大,如果不沉下去,那純粹就是裝模作樣的形式主義,純粹是浪費時間,做給別人看。
另外評論區有人提到注意健康,我在這裡分享一下,特別是頸椎真的很重要,本人過去從事的行業決定了每天在電腦前超過12小時,後來頸椎出問題了,於是加強針對性的鍛煉,以及糾正坐姿,現在一天學14個小時無壓力,本人從小鍛煉,收益非淺,所以我建議程序員都要鍛煉,儘管在鍛煉後的短時間影響注意力和思路,但習慣了就好了,收穫遠比想像的大,貼幾張自己的身體圖小虛榮一下,大家忽略背景的臟,畢竟媳婦不在身邊不太愛乾淨,這是2016和15年拍的,現在天天學習不刮鬍子很老,就不穿今天的圖了。其實sql跟C也沒什麼真的很不一樣的
大部分所謂的觀念
就是「這個問題的解決方案可以換個方法描述」有時候是開啟了一個新視角有時候則不過如此而已都能熬過離散了C就是接著熬而已放寬心學! 種下一棵樹最好的時間是十年前,其次,是現在。
支持,學習有什麼晚不晚的
我告訴你,學吧,不學時間也會用在了刷微博看朋友圈上面了,
十年前有很多人說干軟體開發的30歲退休,現在貌似延遲到40歲退休了,你30歲才學,哈哈。其實什麼時候學習都不晚,但是如果目標過高就太晚了,定些務實的方案吧,個人建議從學Python開始,Python要容易些,等你的Python能力高了以後,再學C不遲。
我爸在煙台,40歲開始學delphi,後來轉c++,現在五十多,公司特批可以在家(方便照顧老人)寫代碼。
想學就學。如果你有這個時間的話,總比花在鬥地主上有意義不是。
有些人上來就噴,以他的小腦袋瓜子,想不出為什麼會有隻學SQL的需求。
部分企業的運維需要,維護資料庫時,需要用SQL語句進行各種操作。還有很久以前,互聯網不發達時,有些軟體公司的售後工程師,也需要單獨掌握SQL,現場為客戶進行一些數據維護操作。時至今日,仍有這方面的需求。
===============================================
誰說學習SQL必須配合一門語言的,不需要,除非你是要自己寫一個資料庫。
當然,如果能掌握一門語言,特別是C語言,自然更好,但是從時間效率上來講,不如直接學習SQL。
告訴你怎麼學習SQL吧。
上W3C網站,上面有SQL語句大全,你下載一個資料庫,按照那上的語句大全,從建表到建視圖,直至最後學習寫存儲過程(現在運用的不多)。
從頭到尾,關編程語言什麼事?
即便是學了編程,也就是把SQL語句寫到你的各個方法里。
至於C語言的學習,下午我上班有空的話再說說吧,其實我在別的回答里已經答過了,題主可以去看看。
SQL 教程
這是在線SQL學習網站,語句一條條練習,至於資料庫建表等操作,現在SQL做的都很人性化,百度下就知道了,不會語句也可以。建好表之後,就可以開始練習SQL語句了。
需要的話,我可以貼一份建表文檔給你。
不是大咖,強答一個。
30歲,學習C/C++語言,一點都不晚。
建議題主拿一本大學C語言課本學習即可,如果不想看書,那可以看一些在線視頻教程(就不貼鏈接了,避免廣告嫌疑)。
有兩點比較重要吧,這裡提一下,算是給題主提個醒。
1. 學習C語言,要學會指針的靈活使用和內存管理。
C是一門很基礎的編程語言,它將計算機的很多計算和存儲資源,全部暴露給程序員調用,程序員要很小心地利用指針來管理這個資源。但也不要過分擔心,只要建立起計算機內存的基本模型,遵循指針的使用規則,做到細緻小心就能把資源安全地管理和使用起來。
寫代碼時要避免內存錯誤,網上有很多關於這方面的技術分析,可以參考。這個講解還不錯:轉:C/C++內存管理詳解 堆 棧。
怎樣比較有效避免內存錯誤呢?
(1) 分配未成功,卻使用了它。編程新手常犯這種錯誤,因為他們沒有意識到內存分配會不成功。常用解決辦法是,在使用內存之前檢查指針是否為NULL
。如果指針p
是函數的參數,那麼在函數的入口處用assert(p!=NULL)
進行檢查。如果是用malloc
或new
來申請內存,應該用if(p==NULL)
或if(p!=NULL)
進行防錯處理。(2) 內存分配雖然成功,但是尚未初始化就引用它。犯這種錯誤主要有兩個起因:一是沒有初始化的觀念;二是誤以為內存的預設初值全為零,導致引用初值錯誤(例如數組)。內存的預設初值究竟是什麼並沒有統一的標準,儘管有些時候為零值,我們寧可信其無不可信其有。所以無論用何種方式創建數組,都別忘了賦初值,即便是賦零值也不可省略,不要嫌麻煩。(3) 內存分配成功並且已經初始化,但操作越過了內存的邊界。例如在使用數組時經常發生下標「多1」或者「少1」的操作。特別是在for
循環語句中,循環次數很容易搞錯,導致數組操作越界。(4) 忘記了釋放內存,造成內存泄露。含有這種錯誤的函數每被調用一次就丟失一塊內存。剛開始時系統的內存充足,你看不到錯誤。終有一次程序突然死掉,系統出現提示:內存耗盡。動態內存的申請與釋放必須配對,程序中
(5) 釋放了內存卻繼續使用它。如何避免產生野指針呢?這裡列出了5條規則,平常寫程序時多注意一下,養成良好的習慣。規則1:用malloc
與free
的使用次數一定要相同,否則肯定有錯誤(new/delete
同理)。malloc
或new
申請內存之後,應該立即檢查指針值是否為NULL
。防止使用指針值為NULL
的內存。規則2:不要忘記為數組和動態內存賦初值。防止將未被初始化的內存作為右值使用。規則3:避免數組或指針的下標越界,特別要當心發生「多1」或者「少1」操作。規則4:動態內存的申請與釋放必須配對,防止內存泄漏。規則5:用free
或delete
釋放了內存之後,立即將指針設置為NULL
,防止產生「野指針」。
2. 學習C++最重要的是建立面向對象編程(OOP)的思維方式。
學習C++時,不能照搬學習C那樣。C++的語法規則僅僅在C的基礎上作了一點點擴充,可以算作是C的一個超集。其實,C++的精髓是給程序員提供了,面向對象程序設計的一個基礎框架,它具有許多靈活的特性(類、封裝、繼承、多態等),能滿足面向對象編程各種技術實現的需要。
C++是對C的繼承,從名稱上也可看出來。為什麼有了C還要有C++呢?或者說,這個『++』到底是加了些什麼呢?
C是一種徹底的,面向過程式的編程語言,它關注一個事物發生和發展的具體過程,利用計算機語言將其模擬出來。也就是說,面對一個問題,當我們需要藉助計算機進行解決時,我們就把這個任務裡面需要「做什麼」給抽象出來,然後去實現它,有多少個任務,就可以抽象出多少個這樣的過程。當有多個任務過程是基本一致時,或只要少部分參數不同,程序員們為了簡化實現過程,發明了「函數」這個東西。利用函數,可以把很多相似功能的過程集中抽象出來,設計統一規範的介面,實現了高效的復用,提高了程序開發的效率。
C++的世界觀跟C就不太一樣了。當我們把精力都關注於事物發展的具體過程時,往往疏忽了主導事物發展的主體。事物發展總是由不同的主體,或者說「對象」,來主導的。很多過程都可以找到(或者設計出)施與受的主客體。C++的世界裡,不但兼容面向過程式的程序設計,更為面向事物主客體的世界觀,提供了豐富的技術實現手段。
在C++里,類與對象是中心話題,圍繞其展開的封裝、繼承、多態技術是核心內容。C++在面對需要解決的任務時,模擬真實世界,將事物發展過程進行更高的抽象。面向對象程序設計,是基於萬物皆是對象這個哲學觀點。在C++里,所謂的面向對象,就是將我們的程序模塊化,對象化,把具體事物的特性屬性,和通過這些屬性來實現一些動作的具體方法,放到一個類裡面。利用封裝、繼承和多態等技術進行擴展,極大地豐富了C++的功能特性,以面對各種不同的程序設計需求。
關於封裝、繼承和多態技術,很多教科書里都有詳細的講解,
- 封裝性,是面向對象編程的特徵之一,是對象和類概念的基本特性。封裝就是把客觀事物封裝成抽象的類。類可以把自己的數據和方法,只讓可信的類或者對象獲取和操作,對不可信的進行信息隱藏,在安全的情況下保證效率。
- 繼承性,面向對象編程語言的重要功能。它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下,對這些功能進行擴展。通過繼承所創建的新類稱為「子類」或「派生類」,被繼承的類稱為「基類」、「父類」或「超類」。繼承的過程,就是從一般到特殊的過程。要實現繼承,可以通過「繼承」(Inheritance)和「組合」(Composition)來實現。
- 多態性,是允許將父對象設置成為,和一個或更多的他的子對象等同的技術。父對象可以根據當前賦給子對象的特性,以不同的方式運作,允許將子類類型的指針賦值給父類類型的指針。實現多態,有二種方式,覆蓋和重載。覆蓋,是指子類重新定義父類的虛函數的做法。重載,是指允許存在多個同名函數,而這些函數的參數表不同(或許參數個數不同,或許參數類型不同,或許兩者都不同)。
88年,馬上30歲,高中畢業
原來上的培訓班,學的網路,就是搞華為的交換機和路由器,後來發現,自己這種學歷,只能在小公司,大型的網路根本接觸不到。然後開始成人專科,成人本科。4年前,開始學習Linux運維,3年前學習Python,最近這兩年公司發展不錯,多數時候只需要見見客戶打電話回郵件就好,也不需要幹活了。
但是現在已經明顯感覺到行業的不景氣,而且老闆掙到錢了,已經無欲無求。。結果我就尷尬了!
時間充裕今年開始學習英語,數學,基礎演算法,C + Go,開始位下一步做準備,也不是為了這能幹這個,只是想要開闊自己。。。起碼能聽懂別人在說什麼,千萬別活在自己的小圈子裡。。。
而且,一不學習,就想刷知乎!朋友圈,各大門戶網站,感覺人生藥丸。。。。。。
32歲。經常被公司的90後嘲笑說什麼三十幾歲人還不結婚還不買房還當不上領導怎還在做XXXX,諸如此類。我經常只能無奈地說道,何必總把年齡限制自己呢。雖然現實很殘酷,但我總相信想做什麼時候都不怕遲。現在在每天工作外花兩個小時練英語口語,兩個小時學Python。一點一點積累,總會有爆發的時候的嘛。共勉之。
馬克思告訴我們,抓住主要問題的主要方面。你的主業是自動化生產軟體控制實施,你遇到的問題是工作中SQL較多,想學習一下,提高工作效率。所以你應該做一個自動化生產軟體控制實施行業中最會編程的人,或者會編程的人中最懂自動化生產軟體控制實施的。沒有編程基礎,學習c語言,c佳佳成本太高,難度太大。而你學習編程的初衷是利用好SQL,所以,學習一下用python調用SQL吧。這樣你的關注點就會是如何解決你工作中遇到的問題,而不是如何解決你編程中遇到的問題……我感覺一般情況下python50行代碼就能解決你工作中的問題了,而且教程非常多。
那麼多鼓勵人的回答,我就說下反的吧。我不建議那麼大年齡再去學編程,普通編程技術人才已經大有人在,如果想要做自己的產品,僱用技術人員來做會快很多,也比較專業。興趣愛好除外。
年紀大了,所擁有的社會資源比剛出來打工的技術人員多,應該還有更適合您的工作,而不是親力親為去花費大量時間去做開發,你的時間比年輕人寶貴,應該用在更有價值的地方。
這就是我的觀點。我是幼兒園學的
我只說一句,我是35歲開始學習C++的。
必須要說的是,題主已經輸在起跑線上了,不過幸好人生是場馬拉松,不放棄,總是可以到終點的。決心罷了,快慢而已。
個人覺得不晚。目前在的一個地方,很多二十幾三十幾想再就業的人過來學。我在學校學的軟體專業,學校開課流程是,大一上c,大一下c++,大二上大二學JAVA,數據結構大二下資料庫。敲,瘋狂敲,死命的敲,代碼量積累下來,多敲代碼。
你這又不是30歲放棄現有工作轉行當程序員,只是現在工作需要,有啥晚不晚的?
30歲成億萬富翁晚不晚?不晚啊,依然很開心,雖然可能沒有20歲成為億萬富翁更好些。
推薦閱讀:
※如果不想學編程的話,還有什麼技能能讓我在 IT 界立足?
※學習英語給你帶來了哪些機會?
※請教金融圈內各行業近5年內的發展前景?
※房子是這個時代的「鐵飯碗」嗎?
※外交部條約法律司工作強度如何?