12 歲如何入門 iOS 編程?

對編程感興趣(但僅僅作為興趣),想從事 iOS 開發。

但是我十二歲,沒接觸過編程語言。

  1. 請問從什麼學起?
  2. 有哪些值得推薦的書籍和教程?

謝邀。對於個人來說,這是我在知乎上看到的最有價值的問題。

補充一下quora上面的相關問題鏈接:
Programming for Kids: What are good ways to teach 12-year-old child programming?

另外補充幾個相關的新聞鏈接:
讀讀這3位年輕創業家的故事吧!13歲、16歲、22歲——可真夠年輕的!
下一代程序員是什麼樣子?
玩遊戲學編程,Hopscotch讓孩子變身小小程序員
CloudFlare創始人傳奇人生:7歲編程,法學博士,獲哈佛商學院最高榮譽-CSDN.NET
9歲女孩欲製作遊戲 僅一天募資超10000美元
打遊戲學編程,不輸代碼就看機器人被幹掉
專註程序開發的視頻教育網站Treehouse獲700萬美元B輪融資,將推出針對中學生的編程課
Learn Web Design, Web Development, and More
如何培養下一代扎克伯格 專為孩子們準備的六大編程應用
不過這個和codecademy不同,是付費網站。
只能說,跟老美相比,我們又落伍了。

因為我這幾年一直在搞iOS開發,也一直在努力嘗試把教育和遊戲結合在一起,提供寓教於樂的學習體驗。對於知識教育(相對於教育的另一大核心人格教育),個人認為兩點最重要,
首先就是培養興趣;
其次就是培養自主學習和解決未知問題的能力。

先不論年齡,既然你對語言和ios開發感興趣,已經解決了最重要也是最難的一個問題。
那麼接下來就是如何培養自主學習和解決未知問題的能力。

根據你的描述,我提一下自己的建議,供你參考,但不一定適合你個人的特點:

1.說到語言,如果要學習編程和軟硬體開發,首先要學的不是哪種編程語言,而是英語。

沒錯,這是一個無奈的事實,除非有一天有哪位天才的中國黑客開發出基於中文自然語言的編程語言,並且讓它被世人所接受。
當然,考慮到現在的中小學都已經開設了英語課程,這個看起來並非很大的障礙。事實則不然,很多大學生研究生包括畢業多年的老碼農對英語的掌握都不行。當然,不乏很多高手牛人編程開發搞得好但英語很爛。但考慮到以下一些事實,個人認為適當提高下英語水平是很有必要的。

(1)幾乎所有重要語言,重要開發工具,開源項目都是在英文網站上以英文的形式展示。
以ios開發為例,蘋果官方開發論壇,stack overflow,github,google code, source forge等等網站都是讓自己成為iOS開發高手的極大幫助。
以創業為例,kickstarter,Y-Combinator等網站會幫助你實現自己的一個看似甚至荒謬的創意。

(2)基於我朝特色,很多對於開發人員開發非常重要的社交網站和資源都必須翻牆獲取,當然也都是英文的。
比如twitter,facebook,一些海外的極客,黑客論壇。

(3)針對12歲這個年齡,很難找到針對性的語言和軟體開發培養教程,但是這個問題對老外(特別是老美)根本不是問題。如果你的英語比較好,可以很輕鬆的通過twitter,facebook,論壇,編程網站找到適合自己年齡階段的開發教程。我不想直接給你答案和鏈接,如果你真的對編程感興趣,就要嘗試著自己去尋找答案。

絕大多數的老外牛人都是在12歲甚至更早的年齡開始了自己的編碼和創造生涯,而其中的大多數則是從開發屬於自己的遊戲和小工具開始。那些名字都不用提了。
正因為如此,國外牛人和我們的差距至少是10年,不得不承認,這是一個可怕的數字。而且人最有想像力的年齡階段正是在12歲前後,只會更早,而非20,30甚至40。

當然,如果你對英語很頭大,也可以跳過。不過我想引用allan kay的一句話,People who are really serious about software should make their own hardware. 真正喜歡軟體的人會嘗試著製造自己的硬體。這句話後面我還會引用,不過在這裡其實想套用它的格式來一句,People who are really serious about programming should be familiar with English. 真正喜歡編程的人應該對英語很熟悉。
既然你有興趣,還怕什麼!

那麼如何提高英語水平?上課幫不了你任何忙,唯有興趣。比如看看國外的電影,玩玩國外的遊戲(英語單機或者外服),嘗試著寫自己的技術博客,多看國外的新聞,多去國外黑客極客喜歡的網站轉。對於iOS開發來說,意味著多看蘋果官方文檔。
相信我,在這個過程中你不僅會提高英語水平,也會拓展你的視野和思路。


2.第1點裡面說的都是英語,接下來說說編程語言和iOS開發的學習。

之所以要強調第1點,是因為國內實在沒有什麼好的教程,特別是針對12歲這個年齡階段的初學者來說。
我一向很討厭國內的計算機課教學和國內一些公司的面試。一上來就是C語言,一上來就是複雜的語法,數據結構和演算法,先把你嚇個半死,從此徹底失去了興趣。可以說,在我朝:
很多程序猿之所以願意當程序猿,只是把它當做一個謀生工具而已。我們這批程序猿很多人都是這樣,也很難改變了。但未來的天朝程序猿應該是真正有夢想,有創造力和想像力的人。

所以,遠離一些讓你瞬間對編程失去興趣的教程,除非你要把自己當做一個勵志榜樣。

step1. 如果你英語可以,我建議你可以從codecademy的基本教學開始
Learn to code

如果你對英語沒什麼興趣,可以跳到step2
雖然這裡面教的主要是網路開發語言,比如javascript,php,ruby,python之類的,但個人認為非常適合初學者入門。
為什麼是這些網路開發語言而不是C語言之類的?
1.興趣
codeacademy的教程非常淺顯易懂,而且很有趣味性,可以讓你在不知不覺間學到很多東西。
2.立見成效
學習任何一門技能(不僅包括編程語言)的主要目的是用來解決未知或未曾接觸過的問題。所以在學這些語言的第一天,你就要嘗試著做一些簡單的網頁,試著做一個自己的網站。不要被那些所謂的專家嚇倒,按照我朝專家的觀點,一個程序猿不學會數據結構和演算法就不能做東西,純屬放屁!
這一點我和很多老美的觀點一致,屠龍刀固然鋒利,殺雞未必比得上菜刀。你要學習的是如何解決問題,而不是去發明另一種編程語言和演算法,這些大可以在你成為高手之後再去做。
永遠記得,入門和成為高手是不同的過程,絕大多數人都倒在門檻上,不敢邁出第一步。

可以參考這篇文章:
如何學編程,JUST DO IT!

在學完codeacademy系列中的每種語言(做了一個你自己的網站或小應用)後,你就可以真正開始iOS的學習了。

我希望你到此為止仍然對編程有非常濃厚的興趣和創造自己產品的渴望。

step2. 接下來你就可以看http://raywenderlich.com裡面的iOS入門系列教程了。

iPhone Tutorials
裡面有iOS for high school students系列教程,雖然你可能不是高中生,但考慮到我朝初等教育的先進,應該遠遠超過了他們的水平。
iOS For High School Students: Getting Started

另外我根據這裡面的教程改寫了一個中文版的教程(讓不懂編程的人愛上iPhone開發)
讓不懂編程的人愛上iPhone開發(系列1完結)

step3. 學完了這個系列後,就可以考慮做自己的iOS產品了。

如果你想開發簡單的應用,可以接下來看這個網站的應用開發系列
How To Create A Simple iPhone App on iOS 5 Tutorial: Part 1/3

如果對遊戲開發感興趣,可以接下來看這個網站的遊戲開發基礎系列
How To Make A Simple iPhone Game with Cocos2D 2.X Tutorial

使用cocos2d(cocos2d-iphone,cocos2d-x或cocos2d-html5),可以比較輕鬆的開發手機或者平板電腦上的遊戲。
我個人跟人合寫了一本&的書,不過自覺裡面寫的有些啰嗦了,也不一定適合你。說明一下,這本書需要對Objective-C和iOS開發有一定的了解,完全的入門新手不建議購買。
(《Cocos2D權威指南(Coco2D領域內容最全面、系統和深入著作,系統講解其使用方法、技術要點、工作原理、開發技巧、最佳實踐及性能優化)》王寒,屈光輝,周雪彬)

哦,我差點忘了告訴你,raywenderlich這個網站的教程都有中文版的,你是不是鬆了一口氣呢~

step4. 接下來怎麼辦?

接下來要回到1裡面告訴你的方法,想一個idea,然後把它實現。在這個過程中你會遇到很多問題,你需要查看蘋果官方教程,去和高手論劍,去開源項目取經甚至為這些項目做貢獻。
我最近剛整理了下iOS開發常用的國外網站:
iOS開發常用國外網站清單_eseedo_新浪博客
當然,國內的cocoachina(CocoaChina 開發討論區 最熱的iOS開發論壇),51cto(iOS_移動開發)和csdn(CSDN.NET - 全球最大中文IT社區,為IT專業技術人員提供最全面的信息傳播和服務平台上)也有很多的資料可以供你參考。 )
但始終記住:
你學東西是為了解決問題的,不要陷到某個坑裡起不來了。而且你可以創造性的用自己的方法來解決問題。
相信我,這個世界上本沒有專家,只是忽悠多了就成了專家。

不知道你目前在哪個城市,我目前人在成都,如果你需要學習又恰好在這裡,可以周末或假期找我。我願意免費教你學會基礎的iOS開發(應用或遊戲都可以),這樣或許更有針對性。可以通過我的郵件或新浪微博(http://weibo.com/eseedo),微信(iseedo)聯繫我。
我很樂意和你分享一下自己學習iOS的心得體會。

順便說一下,我最近其實一直在考慮是否業餘時間開一個類似美國少年黑客訓練營性質的針對k12(小學,初中,高中)的編程周末班或者假期訓練營,主要教K12遊戲和網路應用開發,可以是公益性質的,也可以是帶商業性質的。但因為工作原因遲遲沒有行動。如果有同好可以聯繫我,我們一起探討下這個問題,共同彌補中國黑客的10年差距。我相信這是一件非常有意義的事情。
這不是一個生意,但卻是一件值得去做的事情。

對不同的人來說,或許應該根據自己的實際情況來選擇不同的路。我從來不認為興趣導向的學習方式就是適合所有人的,沒有任何東西是適合所有人的。每個人都可以選擇自己的路,條條大路通羅馬,沒有一個人的路是相同的,也沒有萬能的路。
但至少我個人的理念是,Learn programming the happy way,learning everything the creative way.
在快樂中學習,在創造中成長,這就是我所追求的目標。

最後的最後,我想說,facebook的最初版本就是PHP寫的。選擇神馬語言進行開發,真的沒有你想像的那麼重要。重要的是,立即行動起來,做產品。參考:
馬克·扎克伯格是獨自完成 Facebook 最初版本代碼的嗎?


@王寒 已經回答的非常清楚了。作為一個26歲正在學習iOS開發的初學者,提供個人的幾點小建議。
1.如果英文有困難,《iOS 5基礎教程》可以作為中文入門教程,最好把個人環境搭建的和書中環境一樣,初學者這樣會減少一些麻煩。
2.對著書中的代碼一行一行的敲,永遠不要紙上談兵,開始不懂沒關係,哪裡不懂就上Google搜專門的教程,如果還不懂就跳過去,只要能堅持下去,終會找到頓悟的感覺。
3.基本學完本書的前9章就可以做項目了,以項目為中心是學習一門新技術的最快的方法。可以自己試著做一個感興趣的小APP,想好需要哪些界面,如果書中的例子滿足不了,可以上Code4App - iOS 開源代碼庫(當然這裡很多代碼都是Github上的)去找一些例子,看看別人是怎麼實現的。不懂的Google去查,慢慢你會發現StackOverflow上的答案往往靠譜的多,不過初學者沒有關係,大多數簡單的問題中文也有很好的解決辦法。

總結:
1.堅持最重要
2.利用好Google
3.學好英語(即使前期可以不用,但終究還是逃不過的)
4.以項目為中心


你好,我就是從差不多十一二歲開始學習編程的?
現在十五了可以熟練的寫網頁了?
正在自學iOS的開發?

我一開始學的是網頁編程,
非常容易上手,
HTML+Javascript+CSS+PHP,

他們可以為你建立信心
培養基礎的編程知識
而且都有中文版教程在網上

有錢的話在Domain Names上買一個虛擬主機,把自己的網站都放上去
秀給同學看……

學編程其實也要懂一點設計,
多去 優秀網頁設計(網址自己Google)看
除了設計教程還會有網頁設計的一些趨勢
比如說今年流行響應式設計(就是同一個網站手機和電腦看起來是不一樣的,在小屏幕上特殊設計過來提高閱讀體驗)和扁平式設計(使用色塊與純色硬邊陰影,減少高光和柔和陰影的使用)之類的,

然後多在網上生活中結交大神沾染大神氣息什麼的
當你覺得你已經可以繼續的時候
就去網上找各種iOS 開發教程,
我比較推薦先從Objective-C學起
因為雖然那些iOS 開發教程會一開始讓你做出個什麼搞得你很有成就感,可是到最後你還是一頭霧水

其實最好一開始學編程的時候就用英語學,這樣所有術語你都是用英語學的,之後更複雜的語言的學習會更輕鬆。

就醬紫吧
我又做了一次毫無章法的回答……
有問題可以email我:
ghcpuman902@gmail.com

我只是想說我跟樓上那些大叔比起來跟你年紀近一點比較好溝通不過他們才是大神 要跟他們好好學習。

-結-

---------------11 Jun 2013 Update-----------------
阿阿阿阿阿阿阿!!!!
最近忙著考試沒發現被一大堆人回復了。。。
我把自己一個代碼一個代碼敲出來的個人站放出來好了。。。。
MangleKuo
繼續膜拜吧。。[壞笑]
嗯。。。
雖然我沒空接工作,我也沒那麼牛逼,但是有個個人站是一件很帥的事~
而且有時候要和同學分享個什麼都很方便~
呵呵呵~~
----
對了。。。

@LEAO
看回答問題思路清晰文筆流暢語言也顯得很老道,想想自己十五歲幹嘛呢?逃課打架談戀愛呢……悔不當初啊。。。。

我思路清晰嗎?!?!
文筆流暢?!?!
語言老道?!?!
我一直覺得自己不擅長組織語言啊。。。。。
-----
要勾搭的請在我個人站找到我郵箱/Google+。。。
謝謝。。。
用電腦不好找到哦~

-------2015 5月6號更新-------

額,對於那些關注了我的,評論了我的人,由於我不是很常上知乎,沒辦法一一回覆實在是很不好意思。

不是很常上知乎是因為越學習越覺得人外有人天外有天我還是不要用我這膚淺的知識亂回答問題亂誤人子弟了吧(笑)。

還有一個原因是,知乎上的問題都很籠統,而我回答問題喜歡回答得很細節,有時候還會加上自製的圖表、動畫什麼的,所以都很花時間。花太多時間在網路上,學業上就得掛啦_(:3」∠)_

關於我自己的一些近況:

現在17歲,在英國讀書,大學前最後一年,大學第一志願是帝國理工讀理論物理。

個人網站在慢慢更新,具體如何更新還在計畫中。那些說我舊網頁排版差的我也知道 我會慢慢改進的啦??

嗯,除了個人網站以外,我也有在寫一些其他東西,比如說這個:http://manglekuo.com/else/animation/projectile.php 是一個加速度模擬器?昨天寫的,今天改良了一下,可以模擬自由落體之類的。斷斷續續其實還寫了不少東西,大部分都是滿足個人需求。比如說小說閱讀器啊(從原網站讀取內容然後用CSS改變外觀來方便手機閱讀)、課表啊(能讀取課表並自動按照時間顯示課剩餘時間、下節課、明天課之類的。課表可線上編輯)、計時器啊(http://thetimer.info)、等。

所以其實我的(最主要是網頁)編程沒有落下啦??

不過我曾經說過要學的Objective-C後來就進展不大了?感覺不是學C出身的很多東西都很不能接受啊??而且沒什麼動力因為我已經能用網頁寫出大部分東西了?

現在多學會了一個jQuery,感覺比純Javascript方便很多呢。而且學了有助於理解javascript

之前有在玩Arduino感覺還挺不一樣的。能把編程和現實生活的輸入輸出(LED、溫度、自製電容觸屏)連結在一起簡直是小時候美夢成真啊!!而且Arduino語法很簡單!

和Arduino編程介面同源的Processing也很好玩!可以輕鬆用代碼畫2D及3D圖案,尤其是當你想要使用攝像頭、或獲得其他電腦屬性(音量、WiFi強度、屏幕色彩平均值之類的)的時候,Processing都提供了很簡單的介面!輕輕鬆鬆做出色彩豐富的遊戲!

寫複雜演算法、解數學問題的話 Python會很方便。尤其是可以把字元每一位用數列的方法存取這一點在題目涉及到字母時特別有用。

最後,假如你真的想關注我的話,去新浪微博@MangleKuo 關注我吧??

微博算是我最活躍的國內社交網路。我會發些我對事情的想法和一些其他我想和世界分享的東西。

但請注意1年前的我和現在的我就已經是完全不一樣的兩個人了??請不要把看我以前的微博產生的印象加到現在的我身上??

謝謝你。謝謝你們。

MangleKuo


開始就學語言難免會感覺枯燥。我認為興趣是第一位的。
可以先玩玩 Alice,圖形化操作,界面跟 Xcode 相似。既可以培養興趣,又可以培養編程思維。
這是免費的:Alice.org
此外,英文如果有限可以在學習編程(包括學 Alice)的同時學英文,不懂就查字典或者問 Google,不建議直接看中文教程。因為我的經驗是中文教程比英文還要難懂,而且中文教程的更新速度比英文的慢。


我完全無法理解那些教導12歲孩子要學ios開發就先學英文再學這個那個的人,這不叫幫助孩子,這叫扼殺孩子的熱情和興趣。

那麼多的人想學而最終沒有學就是被你們這種人給嚇的。接點兒地氣不會禿頭的。

哥也是學這個干這個的,寫點兒代碼有這麼高深么,嚇唬誰呢,裝啥呢,你們念書哪會是怎麼學會的?你們是12歲無基礎開始學么?

買個mac買幾本書學英語學數學統一思想整理論??
想過人家錢從哪裡來了沒有?想過各種成本了沒有?看那麼多學那麼多買那麼多把人家嚇退了咋辦?

搞那麼多東西幹嘛?題主唯一需要的是馬上動手寫。
怎麼寫?寫啥?
咱挑個軟柿子捏,選個比較簡單的,學習成本比較低,比較容易上手的馬上動手——PHP,html什麼的。
罈子一搜一堆。進去看看,該裝的裝,該下的下,然後對著教程搞點兒簡單的東西
就這樣,玩2至4周,你就知道自己是真的喜歡coding還是只是覺得挺Cool的想玩玩。

動過手了,你才知道是不是真喜歡。要是真的喜歡,再適當參考下那些讓你學這學那的回答吧。

那麼多的思想理論全套方案,或許理論上是走上牛逼之路的助力。
若是想入門,那就馬上動手,怎麼成本低怎麼來,怎麼簡單方便快捷怎麼來。


1?別人學1個月就能做APP,你也許10年都看不完一本入門書。
2?別人拿30K一個月,你可能3K都沒人要。
3?能買Mac,就買預算內最貴的。
4?不要自己折騰配件。
5?配件升級順序:內存(8G起步) -&> 存儲(SSD 256G起步) -&> CPU -&> 顯卡
6?買不了Mac,就自己黑一個(過程中有任何問題,自己搜索解決,本群不討論任何盜版、越獄、逆向、破解問題):
VM10裝Mac OS X 10.9.3及更新到Mac OS X 10.10
7?完整APP項目源碼:Objective-C singro/v2ex · GitHub
swift YANGReal/JokeClient-Swift · GitHub
8、趕緊買書看書: OC 《Objective-C編程:Big Nerd Ranch入門經典》([美]Aaron Hillegass)【摘要 書評 試讀】
iOS 《iOS編程(第4版)》([美]Christian Keur,Aaron Hillegass,Joe Conway )【摘要 書評 試讀】
進階 《iOS編程實戰》([美]Rob Napier,Mugunth Kumar)【摘要 書評 試讀】
《Objective-C高級編程 iOS與OS X多線程和內存管理》([日]Kazuki Sakamoto,[日]Tomohiko Furumoto)【摘要 書評 試讀】
Swift numbbbbb/the-swift-programming-language-in-chinese · GitHub
9?看視頻:斯坦福大學公開課:iOS 7應用開發
斯坦福大學公開課:iOS 8開發
10、加Q群:130283564/118623167/232099237/147043528
Swift:337176674/373274632
逆向:251453531
11、論壇:https://www.v2ex.com/go/idev
iOS開發討論區
Newest "ios" Questions
http://www.reddit.com/r/iOSProgramming/
12、專業博客:objc中國
NSHipster 中文版
Ray Wenderlich
Video - objc.io issue #23
13、iOS學習資料匯總:Aufree/trip-to-iOS · GitHub
14、有任何學習上、工作上的問題,都可以問。但不要在線等別人答,趕緊自己去搜索。
15?能用Google就用Google,不行就百度。不要只搜一次,閱讀了解部分信息後,增加或修改關鍵詞繼續搜。
16?多用專業網站的站內搜索,或者Google/百度時加」site:」。
17?實時請教是最低效的,多看書多看博客多看問答社區多搜索。
18?多參加技術沙龍,熟悉自己謀生的技術圈子。以防萬一,帶本書出門。


謝邀。

這是一個挺老的問題,曾經我很同意大部分人的答案,所以就沒有回答。但是現在來看,我發現我的想法和當初已經非常不同了。

曾經我覺得,編程是非常容易學會的。程序員們都熱愛分享——他們願意開源代碼,願意寫博客,願意寫書,願意講公開課…… 網上有著一切你需要的資源,你只需要去找就好了。我還記得之前看到過一句話,說:程序猿都是野生動物。

因為當時我也是這麼過來的。從最開始什麼都不會,看 Head First 的書,看 Stanford 的公開課,到做自己想做的項目,到現在寫各種各樣有趣的程序,從來沒有人教過我(直到我上了大學,但是依舊和 iOS 沒有什麼關係)。當然,現在也還在路上。

可是隨著我接觸了越來越多初學編程的人,在觀察他們的過程中,我卻開始覺得,這樣讓人自學的做法實在是太糟糕了。世界不是像我想像中的那樣運行的,東西不是在那裡你只要去找就好了。我們或許已經走的太遠,早忘記了當初自己出發時的艱辛。

所以,我想要強調的,最重要最重要的一條建議:你需要一個引路人。

不是一個老師,而是一個願意一對一回答你問題的人。就在身邊找,你身邊是肯定會有這樣的人的。如果找不到很合適的,找一個能在你困難時拉你一把的人就足夠了。

為什麼?因為學編程一直有一道很高的門檻。這個門檻由很多東西組成,但是最重要的兩條是:1. 你不知道你學的東西的意義在於什麼,這個概念為什麼要存在。2. 編程要避開太多歷史遺留問題,但是你根本不知道坑在哪裡。

編程不像是數學,有推導和證明,更不像是物理,有實驗。編程是一個工程問題。而工程問題是沒有辦法用證明來學習的。

為什麼學 C 的人最開始都很難理解 pointer?因為不知道 pointer 有什麼用。人們需要 pointer,是為了解決一些實際問題的。而當你剛學編程的時候,你都還沒遇到過那些問題,你又怎麼知道 pointer 有什麼意義呢?只能死記硬背,所以理解起來自然自然非常痛苦。可能直到一段時間以後,你寫著寫著程序,突然會想到:啊如果這裡沒有 pointer,那寫起來該多麼辛苦啊。這時候,你才會開始真正理解這個概念。然後再過一段時間,寫了更多的程序,你才會有更深刻的理解。但是在這期間,如果沒有人回答你的問題,你沒有獲得任何正反饋,你會很痛苦的。很多人都撐不過去,並不是因為他們不努力或者不聰明。

當然,Pointer 只是一個很小的例子,當你真正開始覺得編程這個大的概念,變得似乎有邏輯,似乎具體化了的時候,你才算是真正的入門了,你也終於邁過了最難的那道門檻。

同時,工程是為了解決實際問題的。所以自然就會有歷史遺留問題和 legacy system。就好比你建好了一棟樓,你就很難再把這棟樓炸掉重來了。如果當初建樓的時候沒想到一些事情怎麼辦?那就只好打補丁,在這棟樓上修修補補。這些補丁會對初學者造成非常大的困擾,更關鍵的是,如果沒有人告訴你,那突然某一天自己就掉入一個深坑爬不出來,都還不知道。

有些扯遠了,那麼回到具體的問題,針對 iOS,你需要什麼?

就像我之前說的,Head First 關於 iOS 的書很不錯,也很簡單(http://www.headfirstlabs.com/books/hfiphonedev/)。Stanford 的公開課也很不錯,就是稍微有些難(https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099),https://www.objc.io 出的書也很好。或者 https://designcode.io。

一定要多寫代碼,光看書沒有用。

然後多做自己願意做的項目,想到什麼就嘗試把它實現,當時不會也沒有關係,一定要邊學邊做,不要先學再做。

祝好!


最重要的是保持樂趣。

學編程並不需要從英語學起。我開始學編程時是初二,也是差不多的年齡,只是那時只能學 Basic (後來還學了 C++)。那個時候英語基礎很差,但是編程的樂趣太大了,平時英語課本的課文背不下來,記住那些命令和關鍵字還是很快的,因為總在用。折騰點立竿見影的東西,做個小遊戲之類,很快你就會喜歡上編程。一般編程的入門書慢慢看其實都能看懂,最重要的是一個個小東西做來試試。雖然最終沒有將寫代碼作為主業,這個經歷的確能幫助我更好的理解技術,並且更重要的是,有了一段快樂的時光。

未來我的小孩,我會讓他從寫代碼控制機器人開始,多有樂趣啊。(其實是我自己想找個人陪玩)

為樂趣而學習,比單純學技術更快樂也更容易。


12歲開始學c語言的飄過:

如果可以重來,當年應該努力多學學繪畫和音樂。


其他人的答案我很贊同,我是來走題的。

我的建議是在這個年齡段,學會合理分配時間是最重要的。
如果你在上學的話,除去正常的學習時間,你每天可能只有 2~4 小時空閑時間去做其他的事(不知道現在的學生減負沒)。
而在這些空閑時間裡,我覺得玩得開心是最重要的。在正常的上課時間裡,如果你自學能力較強的話,是可以擠出 90% 以上的時間學習其他的。
方法和資料真的是次要的,你能在半年內擠出 1000 個小時來學習編程的話,自然就入門了。
而玩還能讓你在生活中發現有趣的事,幫助你創造出有趣的產品。快樂和成就感是激勵你繼續學習的源動力。


匿了哦。我現在高一。
請千萬不要說學英語不重要。
下面講我自己的經歷,但是是Flash,不是編程,編程到初中才開始。
約莫一年級的時候開始自己學Flash,那個時候(應該是在一年級之前就有了興趣)對Flash的興趣大概是在在媽媽和同事(電腦老師)的一次交流當中被激發出來的,因為據說Flash很好玩。隨後電話里問爸爸(程序員,常年不在家)Flash是什麼。然後爸爸就告訴我blahblah記不清咯。然後我讓爸爸給我發兩個Flash看看,我爸幫我註冊了郵箱(Yahoo的,密碼已經忘了),發了進去(依稀記得那時候手機還是黑白屏)。看到的第一個Flash動畫是一隻小青蛙,腳下是彩虹。我本來以為是點擊一下彩虹才會有反應(增加一種顏色)。隨後點點點點,最後發現和我的點擊毫無關係,只是自動會變而已。然後就好失望。。。感謝那位電腦老師,一張網頁三劍客(因此也同時在學網頁製作)的光碟到手,隨後去書店買書,自學(本身自己很愛看書)。
Flash程序界面等等很快就上手,隨後各種操作也熟悉了。唯一的缺憾是那是無法製作交互性的按鈕(這個一直是吶。。。。)
限於當時英語水平(一年級,雖然幼兒園也上的。。。但是。。),加上那時候Flash稍微高級一點的書都說:「不要用腳本助手。」
(我說 一開始不要害怕用相對低級工具,上手之後就扔吧,不要依賴)
(當年那個Office小別針,儘管被評各種差,但對初用Office的我卻有種莫名的吸引)
就好像同時陌生的兩種東西——按照GEB里的說法,就是既沒有CD,也沒有CD唱機。——混在一起。

限於英語水平
一直到三年級我都不會啊啊啊啊。。。(三年級學校里開設Flash課程,講的都會了,就是不講腳本,我報這門課就是為了腳本啊啊啊)
那時候英語真是差到爆,到後期因為老師經常換-不要說我找借口-都開始不及格了啊。。
(現在我在這裡最好的高中,英語全校前3%)

計算機需要實踐,但請一定要留給自己時間,沉沒在書中,愛看書的孩子,到哪裡都不怕。

現在和互聯網,絕非02,03年國內那種無吸引力的幼生期了(有傳奇?)。

現在在跟著codecademy學習js。

最重要的一點:不要管別人說什麼哦,就算是三分鐘熱度,也是熱的有價值的。對於你自己來說,你現在對這個世界,無需害怕奇怪的社會責任(家庭存在的意義)。

你不需要iPhone,你不需要Mac,你也不需要怎樣的一顆心。
朝著自己想要前進的方向前進,沒有讓自己失望的道理。


PS:例子雖然說的是Flash,但我是Flash,Dreamweaver,Firework各種工具交替熟練起來,學起來的。那時候學,其實自己感覺覺得是像學Office一樣。圖形我也因此先用Firework後來再學Photoshop。因為Dreamweaver那時候相對比較難,所以其實是從Frontpage入門的。
不要害怕低級的工具,也不要害怕嘗試高級的工具。
你學會了,沒人會過度在意你是怎麼學的,學會了,就好。


看到這個問題很有感觸,於是就來回答一下,主要是一些個人的經歷與想法,可能指導性的意見比較少。

我現在是一名高二學生,剛好昨天提交了我的第一個應用到appstore上,現在還在等審核。
大概是小學六年紀時接觸到RM系列的工具開始做遊戲,這個工具里可以一種基於Ruby的腳本進行擴展,於是第一次遇到了編程。
之後是初一的時候,開始參加Noip也就是信息奧賽,系統的學習了Pascal,初二初三,因為覺得Pascal編不出「像樣」的程序,於是開始玩起易語言(一種中文編程,後來發現真的是奇差無比)。同時,為了參加機器人比賽,自學了RobotC。做了個網站,所以Php這類有接觸,但知道的很有限。
到了高中,因為有Pascal基礎,開始玩Delphi,剛好Delphi推出了一個叫FMX的跨平台框架(有別與原來的VCL,所有窗口都是繪出來的,可以輕鬆實現透明、旋轉、動畫等效果,現在支持windows mac ios 和 安卓),之後開發了一個桌面應用(一個應用平台)和一個算24點的小軟體(就是前面說提交到Appstore上的那個)。

------------------------------------------
下面是一點自己的感觸吧
1)不要糾結於選什麼編程語言,所有語言都是相通的,主要是在於編程的這種邏輯與思路,當你真正深入了一種編程語言之後,你自會明白。

2)個人不推薦你直接從Objective-C開始,作為一個12歲的學生,既然是以興趣為主「玩」編程,來得到編程的邏輯,為何不嘗試一些可以一次開發出多個平台應用的語言(Flash這種也可以試試嘛),同時呢,如果你數學不錯,可以去嘗試嘗試Noip哦,說不定還能保送什麼的(^O^)/

3)英語真的很重要,絕大部分文檔、資料都是英文的,更別說官方的了,像我這種英文不好的人,一步步研究提交到Appstore所花的時間居然大於開發這個程序的時間。QAQ

4)對成績其實沒什麼負面影響..........真的,反正我是靠這個撿了個便宜.............

5)如果不用Objective-C的話 mac不是必須的,有個mac虛擬機就夠了。

6)暫時想不出了 再補充吧...........


反對一下@Bill Cheng
總的來說,我贊成編程,就從高級語言開始(推薦一下Python),培養興趣是第一要素。其次,才是不要忘了時不時地向底層進發。如果上來就是C,C++,有可能積極性就被毀了。更詳請見程序員的成長與大學教育。
其次,Objective-C也許幾年後就被歷史埋沒了,但是面向對象的思想大同小異,學的紮實,不怕換語言。有點水平的程序員都是多種語言傍身的。
另外,iOS現在已經不是個人的黃金期了,這個時候入行大不如前幾年。不如去投HTML5 CSS3陣營,等題主成手了,HTML平台估計也該豐收了。

我是自學的iOS開發,但是那是大二時候的事了,年齡上被題主完爆了。
先說一下自己的經歷:

第一本書《Objective-C2.0程序設計》(美)科施恩 著,張波 等譯
講純講語言的,只有最後一章有一個小例子。這是我的「母語」教材,第一次看很多地方不懂。而且該書枯燥,我花了很大定力才堅持看完的。不過學Objective-C,它是不二之選。

第二本書《iPhone開發秘籍(第2版)》(美)薩丹 著。張彩霞 等譯
用大量(量真的很大,該書厚度可殺人)的例子帶你熟悉蘋果的官方庫。比較生動,動手性強。每節都有Demo可以調試,強力推薦。

其他的書也看了不少,但是說得上有很大幫助的就這兩本。因為
第一,蘋果的文檔非常全面,自帶的Demo(展示代碼功能的小例子)數量多品種全。如果你英語可以的話這些文檔才是你最好的教材。
第二,像CocoaChina這樣的論壇上的Demo、教程一抓一大把,看這些比看書來的快,而且還免費。編程是腦力活不假,但是大量的記憶保存在手指上,多動手才是上策。

然後,我2000入了一台黑蘋果。400入了一台顯示器。開始了每天Hello World。站在現在的角度上看,黑蘋果不是一個好選擇:

  1. 電腦的配置不低,但電器性能很差,不值2000。
  2. 不久之後我學會了在自己的PC筆記本上裝OS X,目前該技術日益成熟,簡單。
  3. 2400已經是入門mac的50%,不如狠狠心買台mac mini。

雖然不是好的購物經歷,但是人真是「生於憂患」啊,那是我幹勁最足的一段時間。

最後,是申請iDP。這涉及到一張信用卡,而我身為大學生,當時信用卡又卡得很嚴。過程確實很痛苦。不過這不是重點,我想提醒樓主的是,把你的App放到App store上,不要操之過急。等自己的技術和產品成熟了再說不遲。不然就會像我一樣,浪費一個或兩個$99。

我的iOS之路大事記就是這些。我不是正面教材,卻可能是最大眾的教材。當初抱著靠App store養活自己入行,至今沒能實現,就像我所說的一樣,iOS的個人黃金期已過。如果你不是神童,不要期望太高。
但是,iOS至少幫我把握了大學的航向,4年之後我不像大部分大學生一樣一無所長。希望題主也能借iOS之力,提早實現自我教育。因為,體系內教育,就,是,渣。


作為孩子,時間有限,基礎薄弱,應該首先是從簡單的編程開始,形成小的成就感,不斷積累基礎知識和技能,然後再慢慢引導到工業級的語言和編程環境,不能拔苗助長。

大學裡計算機系、外面的培訓機構要培養一個合格的程序員需要多少時間?多少資源?要學多少門基礎課程?

沒有足夠的基礎,少於1000個小時的編程實踐恐怕很難學好。

如果一個孩子每天有很多學業,時間都是碎片化的,很難打好基礎並有足夠長時間的編程實踐。孩子的興趣轉移起來又很快,這個階段,一定要理解,只有孩子在有限的時間(1小時)內學習的東西能實踐並反饋的,才能持續。

我教孩子學編程的時候,就犯過錯誤,先教孩子學python,後來發現沒有應用場景,也比較無趣,很難有興趣。後來從scratch入手就好很多,孩子可以非常快地完成一個跑酷或連連看遊戲,雖然粗糙,但是可以玩玩,不斷優化改進。

由於每個孩子都不同,我建議應該從孩子的個人興趣和知識積累為目標,不一定馬上要學iOS編程,持續積累一段時間後,就能掌握工業級的語言和編程環境。鼓勵孩子去接受更大挑戰,如果孩子有野心,就去學Android、iOS編程,如果沒有野心,也不要著急,先玩玩積累基礎,保護興趣。

現在有MIT的APPInventor,拖放操作很容易學習,孩子可以先做出一個App先玩起來。

IF (你有孩子)AND(希望孩子能夠從小有好奇心)AND (有濃厚的學習興趣)AND (自主學習)AND (升學無憂) AND (學習未來世界最有價值的技能-編程):

歡迎參加2月16日晚上舉行的 知乎 Live - 激發孩子熱愛奧數和編程的興趣,我將分享一些從遊戲開始的、興趣驅動的奧數或編程教育方法。


十二歲,建議進行些藝術類的訓練,比如畫畫,鋼琴,吉他,以及各種文學名著,這些會讓你後面十年的生活比寫代碼更精彩收穫更多。寫代碼真的一點都不酷哦!

補充。。。。。。。。
好吧,還是想再多說兩句。

首先,上面說寫代碼不酷,但是做做產品卻是件很好玩的事情,但是一個好的產品背後要付出很多的艱辛,而且大多數職業的程序員不是在做產品,只是在寫代碼而已,這件事確實並不好玩

然後要看你是為什麼想開發ios,如果是有一顆創業的心,那麼這確實有可能讓你走在同齡人的前面,追隨前面那些叔叔阿姨的回答勇往直前吧,小朋友

如果只是想讓蘋果商店裡有個自己的軟體可以在其他小朋友面前炫酷一下,那麼你可以學習寫代碼,但建議把更多的時間放在藝術文學訓練上會更好玩。寫代碼這種事情,十年以後再學習也不晚,但十年以後你要再想搞點藝術性的玩意,相對你現在,就麻煩很多了。


樓主年少就有如此大志,私十分佩服,請先受一拜

之後,便是一段題文無關的東西:
我非常不推薦樓主你使用objective-c進行iOS開發。
用cocos2d-x系列都好,一開始就上objective-c是非常不對的
你現在學習iOS開發,是的,就像頂樓答案說的那樣,開發學起來很快,而且學成之後很實用,但那是害了你。
如果你以後想要繼續程序員,或者說繼續開發生涯,對於編程語言、演算法和枯燥的理論,是必需要了解的。不了解的後果就是轉換語言十分困難。
現在objective-c確實很火,但是5年以後呢?要是蘋果再出錯誤呢?
是的,5年之後你依舊很年輕,但是那時的你絕對不會再有想現在這樣能夠安心學習理論的機會了,因為你會覺得自己學過了了。
我很早之前學java,到了大學面對c++各種頭痛,因為常用的庫都需要自己手動實現,那段時間我對於編程時間和編程質量的預測完全失效,有段時間我甚至失落的想要放棄編程。後來的轉型更是痛苦交加……說多了都是淚,不說了……

正因為我當年的經歷,所以我明確的反對所有一開始就從java、objective-c這種過於高級的語言開始學的這種方法。學習c很痛苦,內存處理、指針操作、甚至是遞歸、演算法,都很痛苦,但這是必須的。
縱使現在的科技把編程做到了不是程序員都能做的境界,要做程序、要做開發,學習一門c或者c++也是必須的,不然很多時候你會發現自己寸步難行。

接下來是一點我對於iOS開發的學習理解:
首先,iOS開發是非常簡單的,簡單到你實際上沒有必要去看任何教程。因為他們都不必要。iOS代碼的可讀性太高了,看枯燥無味的教程,不如去動手改各種開源項目,伴隨著修代碼實現目的的成就感前進,這樣學習速度更快,學習動力也更足。
然後,絕對不要學習老舊的知識。iOS基本上一年更新一次,一旦更新,以前的知識就沒有存在的必要了,特別是對於新入門的開發者。是的,中國市場複雜,對於iOS開發者來說,考慮的版本號基本和越獄的需要同步。但對於新的開發者來說,老舊、被拋棄的知識必然是不必要的。因此,在國內不存在一本靠譜iOS6開發教程的現狀下,我不建議閱讀任何中文iOS開發書籍。
最後,iOS開發,美術設計師相關知識非常重要,iOS軟體最重要的在於程序的美感,一個使用傳統系統組建的程序,相信我,沒有人願意用的,就算是他們用了,一會不斷的尋找替代方案。
最後的最後,我要說的是,iOS開發,特別是一開始的階段,不要吝嗇任何一個使用開源項目的機會,但是一旦入門之後,開源項目能少用就要少用,自己模仿,自己寫出自己的開源項目,這才是正確的道路。

最後羨慕一下樓主的家財之豐厚,這年頭,大學生都買不起蘋果電腦,我個人現在還用著被車撞過的二手09年MacBook pro和從澳洲電信坑來的iPhone,樓主有如此家庭環境,還有如此大志,還望珍惜

=======體內酒精含量:0.4%=======
私老已,未能食三餐便困於日間雜事……
未來,就交給你們了,少年
(覺得我有性別歧視的,而且自認自己姿態不錯的女程序員,請和我聯繫)


我天,有這麼麻煩么?小孩學東西最好是照貓畫虎,別整多餘的理論和思路,不要甚解,不要英語,不要看別的玩意兒,最好網都別上,不然4399一開,一天就過去了。

建議做法是去書店買一本入門教程,最好是彩頁,圖多,帶教學光碟,例子豐富有趣,不要怕,書店店員一定會給你讚許的目光。然後跟著視頻和教程一步一步做,做完就會了。

親身經歷,本人5年級開始學Flash,一個周末就做了好幾個例子。初一開始學VB,兩個月之後就做了一個(白痴的)AVG遊戲。靠的就是入門書和光碟,沒有別的


12歲主要還是要靠興趣引導。


12歲,也許是現在的孩子接觸外界的渠道多了,能夠有這麼早學習的認知 很不錯。 但是有如此決心,對語言有如此的熱衷,大可不必執著於ios。 可以看到大部分的國外的編程天才,除了編程能力,創造力也是天賦異稟,相比於編程技能,創造力和接受事物的能力,年少時的積累更有優勢。

談談我是如何成為程序員的,我在大學的時候才真正接觸編程語言(pc也是剛摸不久),記得高中時候考vb,沒有過,對編程毫不敏感。大學時候慢慢的上了幾節課才發覺對編程的喜愛(如果這位小朋友已經找到了自己對編程的真正愛好的感覺,真的很不錯)。後來畢業,第一份工作就是做的ios 當時還是ios2.x的sdk 編程環境,調試還很簡陋,作為一步步 純做ios走過來的人,待過大公司,待過創業團隊,不慚的認為自己ios語言方面還算可以,但卻很悔恨自己在大學裡接觸ACM的時間太短,剛找到感覺就畢業了。

對於一個對編程或者說計算機有著熱愛和興趣的人,如果還年輕,那請把精力,學習能力給到基礎課程,演算法本身,把創造力留給ios。


我當初也就差不多跟你這個年紀也想搞開發,當時還是看到一個高中生在文曲星學習機上編了一個冒險島的遊戲才開始對編程感興趣的。
當時在剛好也剛開始接觸Flash的編程,但是由於知識有限,對於面向對象語言理解起來還是非常吃力的,一本書看了好幾遍也看不明白。後來去學習了下BASIC語言,才摸到點門道。後來,隨著年齡的增長,很多不明白的東西都自然而然的理解了。


對於這麼小就開始接觸編程的人來說我稍微提一點建議吧:

  1. 正如上面的所說的,首先英語確實很重要,尤其是未來可能要去看一些一手的文檔來說,沒有語言障礙確實會有不少幫助。就語言本身語法里用到的單詞其實很少,關鍵詞也就那麼幾十個,但是參考文檔裡面的詞就很多了。不光如此,你學校也要求學習英語,而且能掌握一門國際化語言會讓你未來受益匪淺。
  2. 至於語言本身其實都大同小異。總結起來,我覺得其核心就是數學與邏輯。所以數學功底是個基本功。
  3. 現在網路很發達,選擇面很廣相應的做出選擇也會很費勁。實際上編程要掌握的知識還是挺多的,這不僅僅牽扯到語言本身,還有一些操作系統,網路,演算法等等知識。剛開始接觸這麼多概念肯定會暈掉的,所以建議你先從基礎開始學起。
  4. 那麼什麼語言算基礎呢?雖然C語言確實是個不錯的選擇,但是可能還是有點難度。我記得我當初學習編程的時候很討厭看到黑白的控制台,一點圖形都沒有很無趣。相信剛開始開發程序的人絕大多數都喜歡做一個可以互動的GUI程序。所以可以建議你可以去一下Javascript,當然還有一點點HTML和CSS。看上去可能很多,但是其實HTML/CSS/JS無處不在。比如你每天上的網頁就是由HTML/CSS/JS組成。而且,Javascript可以不用什麼開發環境。你直接在你的Chrome/Firefox/360瀏覽器,里就可以完成。

    看到沒?可能,其他語言都要去下載個什麼開發環境,然後會稍微頭疼點。而且,Javascript當初就是希望給非編程人生的網頁設計師使用的,所以會稍微容易上手一點。而且Web技術(你可以先理解為HTML+CSS+Javascript)的跨平台要相對好一些。你可能要問,這跟我的IOS開發沒有一點關係啊!其實現在你完全可以利用你學的Web技術去開發IOS應用,有個叫PhoneGap的東西你可以去關注一下。不過這上面的文檔還絕大多數都是英文的,這個可能有點苦難。

希望以上的建議能給你幫助


推薦閱讀:

為什麼很多 iOS app 都有秒退現象?有什麼好方法避免它?
怎樣利用 iPad 學習?
64 位的 iOS 7 系統和 A7 晶元是否表明蘋果可能要推出堪比家用遊戲機 (console) 的 Apple TV?
哪些 iOS 應用可以做到在圖片上添加文字?
自己的 iOS 遊戲被人抄襲了,而且抄襲得非常精美,效果甚至超過了原作,自己能怎麼辦?

TAG:編程 | 入門指南 | iOS 開發入門 | 兒童學編程 |