it-swarm-vi.com

Tôi vẫn không thể tìm ra cách lập trình?

Tôi đã đọc rất nhiều sách cho các ngôn ngữ lập trình khác nhau, Java, Python, C, v.v. Tôi hiểu và biết tất cả các điều cơ bản của ngôn ngữ và tôi hiểu các thuật toán và cấu trúc dữ liệu. (Tương đương với hai năm học các lớp khoa học máy tính)

NHƯNG, tôi vẫn không thể tìm ra cách viết một chương trình làm bất cứ điều gì hữu ích.

Tất cả các sách lập trình chỉ cho bạn cách viết ngôn ngữ, nhưng KHÔNG làm thế nào để sử dụng nó! Các ví dụ lập trình đều rất cơ bản, như xây dựng một danh mục thẻ cho thư viện hoặc trò chơi đơn giản hoặc sử dụng thuật toán, v.v. Chúng không chỉ cho bạn cách phát triển các chương trình phức tạp thực sự có ích gì!

Tôi đã xem các chương trình nguồn mở trên SourceForge , nhưng chúng không có ý nghĩa nhiều với tôi. Có hàng trăm tệp trong mỗi chương trình và hàng ngàn dòng mã. Nhưng làm thế nào để tôi học cách làm điều này? Không có gì trong bất kỳ cuốn sách nào tôi có thể mua trên Amazon sẽ cung cấp cho tôi các công cụ để viết bất kỳ chương trình nào trong số này.

Làm thế nào để bạn đi từ việc đọc Giới thiệu về Java hoặc Lập trình Python hoặc Ngôn ngữ lập trình C, v.v. để thực sự có thể nói, tôi có một ý tưởng cho chương trình X? về việc phát triển nó?

Có vẻ như có rất nhiều liên quan đến việc viết một chương trình hơn là bạn có thể học trong một cuốn sách hoặc từ một lớp học. Tôi cảm thấy như có một cái gì đó.

Làm thế nào tôi có thể được đưa vào đúng đường?

122
Mark K.

Xây dựng các chương trình phức tạp hơn đi kèm với kinh nghiệm. Khi tôi lập trình lần đầu tiên, tôi nghĩ rằng tôi đang làm tốt nếu nó dài hơn 25 dòng (và tôi phải sử dụng thanh cuộn) Bây giờ tôi viết hàng trăm dòng mỗi ngày trong cùng một ứng dụng dự án.

Bạn có thể thấy trang này thú vị "Dạy lập trình trong mười năm" http://norvig.com/21-days.html

BTW: Rất khó để bắt đầu một chương trình. Một nhà văn có thể gọi nó là "khối nhà văn". Thay vào đó tôi đề nghị bạn bắt đầu viết mã và cải thiện nó. Đừng ngại xóa những phần lớn không làm những gì bạn cần. Bắt đầu lại, lần này bạn sẽ viết với một ý tưởng tốt hơn về những gì bạn đang làm. Bắt đầu lại và bạn sẽ thấy bạn không cần một nửa những gì bạn đã viết lần trước. Khi một tác giả viết một câu chuyện, phải mất một thời gian dài, rất nhiều bài viết và viết lại, v.v ... rất nhiều đánh giá và phản hồi và nó chỉ hoàn thành khi nó phải được xuất bản (phát hành)

93
Peter Lawrey

Tôi luôn bị choáng ngợp bởi các dự án rất lớn, giống như những dự án bạn tìm thấy trên SourceForge hoặc GitHub. Tôi tự hỏi làm thế nào bất cứ ai, hoặc thậm chí một nhóm, có thể hiểu những gì đang xảy ra trên 10 hoặc 100 tệp, với hàng ngàn và hàng ngàn dòng mã.

Không ai làm. Ít nhất là ban đầu.

Các dự án là những thứ hữu cơ. Những gì bắt đầu như một ý tưởng thực sự đơn giản, có thể nhanh chóng mở rộng thành một khối lượng lớn công việc. Đây là, tôi nghĩ, lý do chính cho sự phát triển lặp lại thay vì cách tiếp cận thác nước cổ điển.

Hãy nghĩ đến việc xây dựng một chiếc xe hơi. Mặc dù bên ngoài có vẻ khá đơn giản, nhưng bạn chỉ cần tìm ra một cách nhỏ để khám phá ra rằng có rất nhiều cân nhắc, đánh đổi và các trường hợp vô tội cần phải xử lý.

Thí dụ:

Trong trường hợp của một dự án bán lớn, nó thường bắt đầu nhỏ. "Tôi muốn xây dựng một máy chủ bộ đệm". Vì vậy, bạn dành một vài ngày để hack, và đến một cái gì đó hoạt động, nhưng có thể được cải thiện đáng kể. Vì vậy, bạn thêm khái niệm về luồng.

Sau đó, bạn gặp vấn đề tương tranh do luồng đó. Vì vậy, bạn khắc phục bằng cách thay đổi cấu trúc dữ liệu đồng thời.

Bây giờ quá trình đã chậm lại. Vì vậy, bạn thay đổi cấu trúc dữ liệu đồng thời thành cấu trúc dữ liệu thông thường, nhưng cung cấp các cơ chế khóa để đồng bộ hóa.

Mọi thứ dường như đang chạy tốt, ngoại trừ người dùng bắt đầu phàn nàn rằng các hoạt động không phải là nguyên tử và dữ liệu đang bị hỏng.

Vì vậy, bạn thêm vào một số hoạt động nguyên tử cổ điển, như tăng và lưu. Điều này hoạt động, và người dùng của bạn đang hạnh phúc. Nhưng ai đó mở một vé hỏi xem có thể thực hiện các hoạt động danh sách không.

Vì vậy, bạn dành một hoặc hai tuần để xây dựng tính năng đó. Vào khoảng thời gian này, một người bạn quyết định giúp bạn. Bạn làm việc với nó cùng nhau, hoàn thành và phát hành nó.

Hai vé mở. Có một lỗi trong quá trình xử lý danh sách và có một số trường hợp hiếm hoi đang bế tắc.

Bạn của bạn làm việc với lỗi xử lý danh sách, trong khi bạn giải quyết bế tắc. Bạn nhận ra rằng việc viết lại khá quan trọng đối với các hoạt động nguyên tử cần phải xảy ra.

... Và cứ thế đi.

Điều này có vẻ khá điển hình về cách một dự án phát triển. 10 hoặc hơn các tập tin đã tăng lên 20 trong một vài tuần. Các tính năng mới được thêm vào mà không nằm ngoài kế hoạch ban đầu. Sửa lỗi kết cấu được thêm vào để phát triển mã lớn bất thường.

Lời khuyên của tôi:

Đừng trở nên quá tải. Nếu bạn có một ý tưởng, thực hiện các phần chức năng. Nếu nó đáng để theo đuổi sau đó, hãy thêm từng chút một. Hãy để dự án của bạn phát triển tự nhiên.

70
Josh Smeaton

Ngay cả chương trình lớn nhất cũng bắt đầu với một ý tưởng và được viết từng dòng một.

Cách tốt nhất (có lẽ là duy nhất) để học cách viết các chương trình trong thế giới thực là bắt đầu thực hiện nó. Khi bạn gặp vấn đề, bạn tìm kiếm trên web hoặc hỏi ở đây để có giải pháp cho những vấn đề đó. Cuối cùng, bạn sẽ có được kinh nghiệm và phải hỏi ít thường xuyên hơn.

Tuy nhiên, có một số điều mà bạn cần lưu ý ngay từ đầu:

  • Hầu như không có ứng dụng lớn nào được viết hoàn toàn từ đầu những ngày này. Bạn có thể hoàn thành nhiều việc hơn trong thời gian ngắn hơn nhiều nếu bạn sử dụng các thư viện và khung chất lượng cao hiện có. Bắt đầu với những điều này thường cảm thấy khá bực bội và nhiều công việc hơn là tự mình làm, nhưng điều đó gần như không bao giờ thực sự đúng.
  • Suy nghĩ cẩn thận về cách bạn cấu trúc chương trình của bạn (cách thiết kế nó) là rất quan trọng một khi các chương trình của bạn trở nên lớn hơn. Dành thời gian cho việc đó và đọc một số sách về thiết kế (tôi đặc biệt khuyên dùng "Mã sạch") và kỹ thuật phần mềm cũng như về các vấn đề cơ bản về kỹ thuật.
28
Michael Borgwardt

Những gì bạn đang nói là kỹ thuật phần mềm nhiều hơn là lập trình. Đó là một chút kiến ​​trúc, một chút "thực tiễn tốt nhất" và "mẫu thiết kế", một chút làm việc với những người khác. Mặc dù có những cuốn sách có thể giúp đỡ, nhưng phần lớn đến từ kinh nghiệm. Không ai bắt đầ viết, nói, Microsoft Word.

Hãy nghĩ về một chương trình lớn, "thực sự" mà bạn muốn viết. Bây giờ hãy nghĩ về các phần khác nhau mà bạn cần xây dựng để làm cho nó hoạt động theo cách bạn muốn. Ví dụ, trong trò chơi góc nhìn thứ nhất hiện đại, bạn sẽ cần một công cụ đồ họa 3D, AI không phải người chơi, mô-đun âm nhạc/âm thanh, công cụ vật lý và mô-đun cấp cao nhất để thực thi các quy tắc của trò chơi (biết "bản đồ", cách các nhân vật khác nhau tương tác, v.v.). Và sau đó là tác phẩm nghệ thuật và thiết kế nhân vật và âm nhạc, không ai trong số đó là mã mà là cần thiết để trò chơi được hoàn thành.

Bây giờ: Cái nào trong số này bạn sẽ tự xây dựng và bạn sẽ nhận được ở nơi nào khác? Hầu hết các dự án phần mềm lớn không được lập trình từ đầu. Có lẽ bạn sẽ sử dụng một công cụ 3D và mô-đun âm nhạc/âm thanh sẵn có và chỉ lập trình những thứ làm cho trò chơi của bạn trở nên độc đáo. OK, vì vậy bạn phải tìm ra mô-đun của bên thứ ba nào bạn sẽ sử dụng, sẽ liên quan đến các yếu tố như chi phí, ngôn ngữ họ làm việc với, tính năng nào họ có, cách thiết kế API của họ (nghĩa là hoàn thành nó như thế nào là, nó phù hợp với phong cách lập trình cá nhân của bạn như thế nào, v.v.). Có thể bạn sẽ viết "bằng chứng về khái niệm" hoặc các chương trình thử nghiệm bằng cách sử dụng một hoặc hai ứng cử viên cho các mô-đun của bên thứ ba khác nhau để đảm bảo họ sẽ làm tất cả những điều bạn cần và dễ dàng cho bạn sử dụng.

Ngoài ra, ngay cả mã bạn muốn tự viết có thể là một công việc quá lớn để bạn một mình hoàn thành trong khung thời gian bạn có trong đầu. Bạn cần bao nhiêu lập trình viên khác làm việc trong dự án? Làm thế nào bạn sẽ chia công việc? Làm thế nào các mô-đun khác nhau sẽ được thiết kế để tất cả chúng phù hợp với nhau mặc dù chúng được viết bởi những người khác nhau? Làm thế nào tất cả các bạn sẽ làm việc trên cùng một mã nguồn mà không xóa sạch các thay đổi của nhau (câu trả lời: kiểm soát phiên bản, cực kỳ hữu ích khi bạn làm việc một mình nhưng không thể thiếu khi làm việc với người khác).

Khi bạn đã tìm ra mô-đun nào bạn muốn viết trong nhà, bạn thực hiện quy trình tương tự. Chỉ ra các phần của mỗi mô-đun, làm thế nào chúng sẽ khớp với nhau và bạn sẽ tự viết và bạn sẽ nhận được ở đâu. Tiếp tục phá vỡ mọi thứ cho đến khi mỗi mảnh đủ nhỏ để bạn giữ trong tâm trí, để bạn nói, "vâng, tôi có thể viết điều đó!" Và sau đó làm như vậy. Khi bạn làm, bạn sẽ gặp những trở ngại không lường trước được trong cách các phần khác nhau của chương trình của bạn khớp với nhau. Đây sẽ là những bực bội, nhưng chúng là cơ hội để bạn tìm hiểu thêm về nghề của bạn, và nên được xem theo cách đó.

Ban đầu, bạn sẽ chỉ có thể giữ các phần rất nhỏ trong chương trình của mình - giả sử, các chức năng riêng lẻ - trong tâm trí của bạn, và do đó bạn sẽ phải chia nhỏ mọi thứ trước khi bắt đầu viết mã. Khi bạn có được kinh nghiệm, bạn sẽ nghĩ in chức năng thay vì cần phải suy nghĩ about chức năng và bắt đầu suy nghĩ about đối tượng. Và sau đó bạn sẽ suy nghĩ in đối tượng và suy nghĩ about mô-đun lớn hơn. Cuối cùng, bạn sẽ suy nghĩ trong mô-đun và suy nghĩ về toàn bộ, các chương trình lớn, thực.

Và sau đó bạn sẽ khám phá ra rằng bạn vẫn còn nhiều điều phải học ... nhưng cứ thế. Nếu, là một lập trình viên, bạn không bao giờ ngừng học hỏi, bạn đã lỗi thời và sẽ được thay thế bằng một mô hình mới hơn.

Dù sao, đừng sợ, và đừng lo lắng nếu điều này nghe có vẻ ... khủng khiếp hoặc không thể và rốt cuộc bạn không thực sự muốn trở thành một lập trình viên. Nó không dành cho tất cả mọi người. Tôi yêu âm nhạc và món tráng miệng, và tôi có thể chơi phím một chút và nấu một số món ăn, nhưng tôi không sẵn sàng dành thời gian để trở thành một nhạc sĩ tuyệt vời hoặc một đầu bếp bậc thầy.

Nếu hóa ra bạn không muốn trở thành một lập trình viên viết các ứng dụng lớn, thực, trên máy tính để bàn, thì có nhiều loại công việc lập trình khác. Bạn có thể trở thành một lập trình viên nhúng, ví dụ. Có những thách thức nhất định, thú vị liên quan đến việc viết chương trình nhúng và bạn đang thực hiện công việc hữu ích, nhưng thông thường các chương trình này nhỏ hơn các ứng dụng trên máy tính để bàn. Hoặc bạn có thể viết các ứng dụng web. Trên Web, thật dễ dàng để gắn các bit chức năng lại với nhau, do đó bạn có thể viết (ví dụ) một hệ thống nhận xét Web và nó sẽ hữu ích ngay cả khi đó không phải là toàn bộ ứng dụng Web. Cũng rất dễ dàng để cải thiện nội dung trên Web, vì vậy bạn có thể bắt đầu với (giả sử) một ứng dụng thư Web cơ bản và theo thời gian, phát triển nó thành một thứ như Gmail. (Nhưng đừng làm vậy, vì sau đó bạn sẽ cạnh tranh với Gmail.)

Nếu bạn không muốn trở thành một lập trình viên, nhưng vẫn muốn làm việc với máy tính, có thể bạn có thể đi vào CNTT hoặc một số lĩnh vực kỹ thuật khác. Trong những trường hợp này, việc biết lập trình nhiều như bạn đã làm là rất hữu ích, bởi vì các đồng nghiệp của bạn thậm chí có thể không có nhiều như vậy. Hoặc, bạn biết đấy, trở thành một nhạc sĩ nếu điều đó hấp dẫn, bởi vì (giống như hầu hết các lĩnh vực) nó liên quan đến máy tính ngày nay. Viết các chương trình nhỏ điều khiển âm thanh hoặc MIDI tệp theo nhiều cách thông minh khác nhau, do đó giúp bạn trở thành một nhạc sĩ giỏi hơn. Bạn sẽ thấy rằng bất kỳ kỹ năng lập trình nào bạn có thể được áp dụng trong nhiều lĩnh vực để giúp bạn tốt hơn trong công việc của bạn.

15
kindall

Bạn sẽ không tìm ra cách lập trình trừ khi bạn phải đối mặt với một nhiệm vụ thực sự. Không có lý thuyết nào có thể thay thế một nhiệm vụ trong thế giới thực đơn giản. Trước khi bắt đầu thực hiện các kịch bản r-w, tôi đã ngây thơ đọc rất nhiều sách, với tất cả các ví dụ, nhưng khi tôi gặp phải một vấn đề thực sự, tôi không thể thu thập tất cả kiến ​​thức lý thuyết của mình để hoàn thành nhiệm vụ. Nếu bạn là người bắt đầu, tôi khuyên bạn nên nhận các nhiệm vụ từ bất cứ nơi nào bạn có thể. Đừng nghĩ rằng chúng vô dụng trừ khi bạn giải quyết chúng. Bước đầu tiên hãy thử giải quyết các vấn đề về cấu trúc dữ liệu, chẳng hạn như sắp xếp danh sách được liên kết, thực hiện DFS, BFS trên cây, biểu đồ, v.v. Không chỉ cải thiện kỹ năng mã hóa của bạn, mà điều quan trọng hơn, nó sẽ cải thiện kỹ năng phân tích và thuật toán của bạn , mà tin tưởng tôi là một kiến ​​thức có giá trị. Sau đó, khi bạn sẽ biết rằng bạn có thể khuấy động với các con trỏ, đệ quy, tham chiếu, v.v., hãy thử thực hiện một trình giải phương trình tuyến tính đơn giản hoặc một cái gì đó tương tự.

Dòng dưới cùng. Đó là tất cả về thực hành. Chỉ cần tiếp tục đào và mã, mã, mã.

9
Sorantis

Bắt đầu với các trò chơi trên máy tính, giống như mọi người khác đã làm. Một trò chơi hay là cả thử thách lập trình và thiết kế, cần suy nghĩ cẩn thận về cấu trúc bên trong và nó sử dụng các thư viện hệ thống theo cách dạy rất nhiều, nhưng không có xu hướng phá vỡ mọi thứ và không yêu cầu "lý do chính đáng với kết quả tốt" giống như phần mềm "hữu ích" thực sự.

Quy tắc chung là sau khi viết đủ thứ, một số loại Khai sáng sẽ không thể tránh khỏi xảy ra.

Một điểm hay để bắt đầu (nếu bạn cảm thấy như C) là http://gamedev.net/ , đặc biệt là http://nehe.gamedev.net/ . Ngoài ra còn có nhiều điểm tốt khác để bắt đầu: D

7
Mirek Kratochvil

Cũng giống như lái xe hoặc nấu ăn, lập trình là điều bạn học để làm bằng cách làm. Thực hành là không thể thay thế.

Nếu các ví dụ trong sách giáo khoa đã quá cơ bản đối với bạn, điều đó thật tuyệt! Thời gian để di chuyển cho một cái gì đó phức tạp hơn - và bạn đã có thể tìm ra một số bài tập thử thách cho chính mình.

Hoặc, nếu bạn có một ý tưởng cụ thể trong đầu, hãy chia nó thành bit. Giải một tập con nhỏ của bài toán trước. Sau đó mở rộng. Khi việc tích hợp mã mới vào mã hiện tại của bạn trở nên khó khăn, sau đó bạn thiết kế lại mọi thứ.

6
Emilio M Bumachar

Bạn đang xem toàn bộ chương trình lớn và dường như là không thể. Nhưng toàn bộ điều này được tạo thành từ những chương trình nhỏ ngu ngốc như những chương trình mà bạn đang nói "đừng làm gì hữu ích."

Những gì bạn cần là kinh nghiệm chia nhỏ các nhiệm vụ phức tạp lớn thành các nhiệm vụ đơn giản nhỏ. Đó là gốc rễ của tất cả các chương trình. Phần còn lại chỉ là ngữ nghĩa.

6
Satanicpuppy

Viết một kịch bản 200 dòng. Sau đó bắt đầu cải thiện nó.

Featuritis sẽ giúp bạn có tới 100 tệp nguồn và vài trăm KLOC ngay lập tức :)

5
richo

"Họ không chỉ cho bạn cách phát triển các chương trình phức tạp mà thực sự làm bất cứ điều gì hữu ích!"

Không có định nghĩa về "hữu ích" thì thực sự chúng ta không thể làm gì nhiều để đưa bạn đi đúng hướng.

Chúng tôi không biết bạn thất bại như thế nào, hoặc điều gì đang xảy ra. Chúng tôi không thể biết bạn đang theo dõi bài hát nào.

Bằng cách nào đó, bạn có một khái niệm trong đầu rằng bạn không giao tiếp.

Phần mềm - lập trình - là tất cả về việc đưa một khái niệm ra khỏi đầu bạn vào một số ngôn ngữ (Python, Java, tiếng Anh, bất cứ điều gì).

Một bước quan trọng trong lập trình (và đặt câu hỏi) là xác định các điều khoản của bạn. Bạn có ý nghĩa gì khi "làm bất cứ điều gì hữu ích"? Hãy rất rõ ràng, rất đầy đủ và rất chính xác.

5
S.Lott

Tôi được hỏi câu hỏi này mọi lúc, ví dụ: làm thế nào để bắt đầu Thật đơn giản. Đây là một bước từng bước.

  1. Nghĩ ra ý tưởng. Âm thanh như bạn đã có điều đó.
  2. Đơn giản hóa ý tưởng của bạn đến cốt lõi cơ bản của nó - điều mà bạn nghĩ rằng bạn có thể giải quyết
  3. Bố trí UI trên một tờ giấy hoặc khăn ăn, bất cứ điều gì.
  4. Hãy thử và bố trí UI trong môi trường phát triển của bạn.
  5. Nếu bạn gặp khó khăn, google, google, google, đặt câu hỏi về stackoverflow, sử dụng crap sống từ các tài nguyên internet để nhận trợ giúp. Hỏi bạn bè và đồng nghiệp là lập trình viên để giúp bạn trong các tình huống cụ thể. Quay trở lại bước 4.
  6. Bắt đầu viết logic của ứng dụng của bạn. Nếu bạn gặp khó khăn, hãy đến bước trước và thử lại.
  7. Không lâu nữa, bạn sẽ có một cái gì đó hoạt động sớm.
5
AngryHacker

Tạo một cái gì đó nhỏ. Đừng bận tâm, chương trình của bạn sẽ là thứ 1000 làm điều đó.

Một vài ý tưởng:

  • một đồng hồ (đầu tiên là kỹ thuật số, sau đó là tương tự),
  • người tạo labirynth tự động,
  • hiển thị cấu trúc thư mục,
  • nghe album mp3,
  • vân vân.

Chọn nền tảng, công cụ là một phần của nhiệm vụ.

4
ern0

Ok, hãy bắt đầu với ý tưởng của bạn cho chương trình X có gì đó hữu ích và hãy phá vỡ nó:

  • Sử dụng giấy, sơ đồ tư duy hoặc phần mềm lập sơ đồ để bố trí luồng/luồng logic của chương trình.

  • Vì bạn chỉ mới bắt đầu, hãy chọn MỘT trong số các mặt hàng đó (tốt nhất là gần đầu) và chia nhỏ hơn nữa.

  • Viết mã của bạn cho điều đó trước và sử dụng nó để xây dựng

Chương trình X có cần mở tệp, thao tác và tạo tệp đầu ra không? Xem nếu bạn có thể mở và lặp lại tập tin như bước đầu tiên của bạn. Bạn có muốn một giao diện người dùng Nice? Xây dựng một chương trình có thể chạy chương trình echo tập tin của bạn, v.v. Bạn sẽ không chỉ xây dựng mã bạn có thể sử dụng trong chương trình phức tạp của mình từng bước mà còn xây dựng kiến ​​thức ngôn ngữ của bạn khi bạn phải tìm kiếm và tra cứu thông tin.

Như đã nói - Gnome đã không được xây dựng trong một ngày :-)

3
DKnight

(đã trả lời ở trên trong các ý kiến ​​rồi. Đề nghị gửi câu hỏi này dưới dạng câu trả lời sau khi câu hỏi được mở lại.)

Bạn bắt đầu với một vấn đề - một cái gì đó bạn muốn giải quyết - bất kể bạn nghĩ nó phức tạp đến mức nào. Sau đó, bạn nhận vấn đề này và bạn viết nó ra và bắt đầu chia nó thành những vấn đề nhỏ hơn. Sau đó, bạn phá vỡ những vấn đề nhỏ hơn, vv cho đến khi bạn có một cái gì đó nguyên thủy mà bạn đã biết cách giải quyết hoặc có thể làm như vậy với một số nỗ lực. Bạn bắt đầu mã hóa từng phần này và sắp xếp chúng thành các hàm khác nhau hoặc các lớp khác nhau, v.v.

Sau đó, bạn làm việc trên các vấn đề phụ tiếp theo. Khi bạn đang làm việc trên từng vấn đề, bạn có thể viết các trường hợp thử nghiệm nhỏ và thực sự thấy bạn tiến triển thành hiện thực. Sẽ luôn có những thách thức trên đường đi, nhưng không có lúc nào sẽ thấy nó là một cái gì đó quá vĩ đại để thậm chí tiếp cận (những gì dường như đang đối phó với bây giờ). Điều này đúng với lập trình và nhiều thách thức trong cuộc sống. Họ quan trọng là để phá vỡ nó.

Đối với những gì để làm - ý tưởng. Bạn có thể cố gắng phát minh ra một cái gì đó mới, nhưng bạn cũng có thể lấy thứ gì đó mà bạn có thể có niềm đam mê và đã tồn tại, nhưng chỉ cần làm cho nó tốt hơn hoặc thậm chí chỉ khác biệt. Tôi hiện đang viết một ứng dụng điều chỉnh guitar cho Android trong thời gian rảnh rỗi. Tôi biết đã tồn tại nhiều ứng dụng điều chỉnh guitar khác, nhưng tôi nghĩ đây sẽ là một dự án thú vị và đầy thử thách nên tôi đã tham gia Lúc đầu, điều đó dường như gần như không thể, nhưng sau khi tôi giải quyết vấn đề thành những bước nhỏ hơn, nó thực sự kết hợp với nhau một cách độc đáo. Chia rẽ và chinh phục và kiên trì với mục tiêu của bạn.

3
jeffp

Một trong những điều khó nhất khi bạn là người mới bắt đầu là đặt ra các mục tiêu thực tế cho những gì "làm thế nào tôi có thể cải thiện" -các vấn đề nên có ở cấp độ hiện tại của bạn.

Do đó tôi sẽ đề nghị bạn chọn thực hành giải các bài tập nhỏ, được đưa ra, bởi vì khả năng hoàn thành một chương trình theo một đặc điểm kỹ thuật nhất định là một điều rất có giá trị cho mọi người lập trình để kiếm sống.

Tôi muốn đề nghị bạn xem xét kỹ hơn http://projecteuler.net/ có rất nhiều bài tập và hệ thống "kiểm tra câu trả lời" tự động, cho phép bạn làm việc theo tốc độ của riêng bạn. Các bài tập được diễn đạt tốt, nhưng có thể đòi hỏi bạn phải suy nghĩ. Một số thậm chí có thể yêu cầu bạn phải suy nghĩ rất nhiều, nhưng thậm chí không giải quyết được những điều đó, sẽ dạy cho bạn một cái gì đó hữu ích.

Từ ngữ đầy đủ của vấn đề 1 là:

Nếu chúng ta liệt kê tất cả các số tự nhiên dưới 10 là bội số của 3 hoặc 5, chúng ta sẽ nhận được 3, 5, 6 và 9. Tổng của các bội số này là 23.

Tìm tổng của tất cả các bội số của 3 hoặc 5 dưới 1000.

Bạn có nghĩ rằng bạn có thể giải quyết điều này? Sau đó làm điều đó!

3
user1249

Bạn cần kinh nghiệm trong thế giới thực !!. Không có cuốn sách nào có thể dạy bạn điều đó!

Bạn phải học cách đọc mã của người khác, cách duy trì nó, cách ghét họ (cả mã và người viết mã) cách cải thiện nó, làm thế nào để nghĩ rằng bạn có thể làm điều đó tốt hơn và vài tháng sau hét to lên Tôi sẽ giết người đã từng viết đoạn mã này !!! Chỉ để tìm ra trong phiên bản kiểm soát nguồn đó là bạn!

Bạn phải hiểu sách rất cụ thể và đôi khi cho những người đã biết cách phát triển phần mềm.

Vì vậy, tôi sẽ đề nghị bạn tìm một số công việc lập trình. Nếu cần, áp dụng cho cấp nhập cảnh cơ bản nhất. Có thể bạn sẽ không kiếm được nhiều như bạn nghĩ rằng bạn xứng đáng, nhưng hãy sử dụng một vài tháng để tìm hiểu cách phần mềm được phát triển trong thế giới thực (và nó không phải lúc nào cũng hoàn hảo và với tất cả những thực tiễn tốt nhất mà chúng ta đọc trên web , nhiều lần, chất lượng mã rất thấp, tùy thuộc vào nơi bạn làm việc, nhưng đó là một phần của trải nghiệm)

Tiếp tục đọc sách của bạn, bạn sẽ tìm ra, mỗi năm bạn hiểu thêm một chút (hoặc khác nhau) cùng một chủ đề, bởi vì bạn có thể thấy nó biết với kính kinh nghiệm.

Nếu bạn quản lý để có được một công việc với các nhà phát triển tài năng, tốt hơn nhiều. Học hỏi từ họ, đừng sợ phạm sai lầm.

Cho đến khi bạn phải sửa lỗi khẩn cấp sản xuất trực tiếp đầu tiên của mình, bạn sẽ không biết lỗi phần mềm là gì!

:)

3
OscarRyz

Đầu tiên, bạn đã thực hiện các điều kiện tiên quyết bằng cách tham gia các lớp học, đọc tài liệu tham khảo, xem các dự án nguồn mở và tò mò với các câu hỏi. Tôi nhấn mạnh điều này bởi vì cá nhân tôi đã gặp phải những câu hỏi tương tự trước khi người đó thực hiện bất kỳ công việc chân nào từ phía họ (cụ thể là các cá nhân phá vỡ các lớp học và hy vọng sẽ rút ngắn). Bây giờ, tôi nghĩ lại khi chúng tôi có phòng thí nghiệm về máy Turing và tại thời điểm đó tôi cảm thấy đó không phải là chương trình thực sự. Đây là những kinh nghiệm bạn sẽ giữ mà bất cứ ai thực hiện các bước ngắn đều bỏ qua.

  • Đăng ký dự án sinh viên. Tôi đã tham gia với (CSUA) một nhóm sinh viên có cùng chí hướng để xây dựng một trò chơi cho gian hàng lễ hội vào năm cuối của tôi. Nếu bạn tiếp tục thích nó và nghĩ rằng bạn muốn mở rộng sự tham gia của mình, hãy thực sự tận dụng các nguồn lực. Tìm hiểu về các dự án, nói chuyện với bạn cùng lớp, giáo sư của bạn và thực tập.

  • Ngồi với một lập trình viên giàu kinh nghiệm. Đã có khoảng ba lần trong lịch sử của tôi khi tôi xem chương trình của một người khác thực sự truyền cảm hứng. Đối với họ, họ chỉ viết mã và suy nghĩ thành tiếng. Không cường điệu, tôi cảm thấy như tôi đã thu hút được nhiều hơn từ việc lắng nghe họ hơn là tôi sẽ tự mình làm nhiều năm. Nếu bạn gặp nhiều hơn, bạn giàu có hơn nhiều. Chúng tôi may mắn được ở trong thời đại mà chúng tôi có thể xem video, kiểm tra kho lưu trữ nguồn hoàn chỉnh và tìm kiếm một kho kiến ​​thức trực tuyến khổng lồ ngay lập tức. Nó không thay thế cho trải nghiệm trực tiếp, nhưng khi không có người cố vấn, đó là một cải tiến đáng kể so với vật liệu truyền thống. Tuy nhiên, nhìn vào mã thô của người khác có thể không dẫn đến bất cứ điều gì. Bạn sẽ muốn có một cái gì đó trong tâm trí và một trình sửa lỗi tốt để bước vào logic. Một trong những khoảnh khắc yêu thích nhất của tôi là tạo ra một bản Quake mod và bản thân nó không phải là bản mod có gì đáng nhớ. Nó đã nhìn thấy logic trong trò chơi của Carmack. Bản mod chỉ là một lý do để tôi lao vào.

  • Thực hành giải thích và trả lời các câu hỏi được đặt ra bởi đối tác phòng thí nghiệm của bạn. Tình nguyện giúp dạy. Có thể thành lập một nhóm nghiên cứu và yêu cầu mỗi thành viên trở thành một chuyên gia về một chủ đề của lớp. Sau đó nướng người đó và có họ nướng bạn. Khi bạn buộc phải trả lời các câu hỏi, bạn sẽ có nghĩa vụ phải tự tìm hiểu câu trả lời. Khi bạn có thể giải thích các khái niệm rõ ràng cho người khác, bạn đã làm phong phú thêm sự hiểu biết của mình đến mức bạn có thể truyền đạt nó bên ngoài một cuốn sách và suy nghĩ của bạn.

  • Cuối cùng, đừng sợ học cách khó khăn , làm bẩn tay bạn, phạm sai lầm. Điều này cũng có thể được gọi là kinh nghiệm. Như một ví dụ thực tế hơn liên quan đến câu hỏi của bạn về các dự án có cơ sở mã khó sử dụng và số lượng tệp lớn, hãy thực hiện bài tập này: sử dụng một tệp duy nhất cho công việc của bạn. Thực sự tôi không nói đùa. Câu hỏi rất giống nhau này thực sự xuất hiện ở công ty hiện tại và trước đây của tôi. Ở đây, một nhà phát triển khác quan sát thấy rằng tôi thích giữ một tệp cho mỗi lớp. Điều này có vẻ xa lạ với anh ta và, trong một vấn đề liên quan, anh ta cũng không thích các lớp học một phần. Vì vậy, một cách để bạn có được cảm giác khi nào hoặc nơi thích hợp để phân tách logic thành các tệp riêng biệt sẽ bắt đầu chỉ bằng một tệp duy nhất. Sau khi bạn đã thực hành quy tắc một tệp trên nhiều dự án với hy vọng tăng độ phức tạp, bạn có thể chạy vào một dự án nơi bạn có quá nhiều lớp trong một tệp mà bạn cảm thấy khó đọc hoặc do điều khiển phiên bản trở nên khó cộng tác. Tại thời điểm này, bạn muốn tạo các tệp riêng biệt để nhóm các lớp khác nhau. Với sở thích của bạn, bạn có thể quyết định sớm rằng bạn thích tất cả các lớp dữ liệu trong một tệp. Sau đó, có lẽ sau này, bạn có thể quyết định rằng bạn thích các tệp riêng biệt ngay cả giữa các lớp dữ liệu dưới dạng một nhóm.

2
patterns

Phân chia và chinh phục.

Nó đơn giản hoặc khó như vậy.

2
ocodo

Hãy thử một dự án nguồn mở, xem bạn có thể phù hợp không. Bắt đầu bằng cách tải xuống nguồn và xem bạn có thể lấy một số vé không

2
Martijn

Khi tôi muốn học một ngôn ngữ mới, tôi thường cố gắng thực hiện một số biểu đồ fractal. Bằng cách đó, bạn sẽ có phản hồi ngay lập tức nếu nó hoạt động và nó rất bổ ích. Và có rất nhiều cách bạn có thể cải thiện một fractal. Việc thực hiện ngây thơ của mandelbrot chậm như địa ngục.

Nó không hữu ích lắm, nhưng bạn học được rất nhiều và thật tuyệt khi nhìn vào.

2
onemasse

Khi tôi bắt đầu lập trình, tôi yêu thích các trò chơi máy tính. Vì vậy, tôi bắt đầu viết các trò chơi của riêng mình, ngay khi tôi có bất kỳ công cụ nào trong tay để làm điều đó.

Hoàn toàn tự nhiên, trò chơi đầu tiên của tôi là một cuộc phiêu lưu văn bản. Tương tự như vậy, bạn có thể bắt đầu với một câu đố hoặc một cái gì đó, hoặc một số loại trò chơi đoán.

Ngoài ra, bạn có thể bắt đầu với một cái gì đó, như máy đánh bạc (bạn không thực sự cần hoạt hình, hoặc thậm chí là hình ảnh. Chỉ cần sử dụng A = Apple, L = chanh, S = start, P = Plum, v.v.).

Điều này sẽ dạy cho bạn những điều cơ bản để xử lý một số đầu vào của người dùng, duy trì trạng thái trò chơi và tạo đầu ra tương ứng.

Tôi đi xuống con đường này khá xa. Tôi dần dần học được cách đọc trạng thái bàn phím hoặc chuột, cách sử dụng mã đồ họa. Tôi đã học được nhiều hơn về ngôn ngữ (tôi bắt đầu với Pascal) và sử dụng ngôn ngữ này để cải thiện các trò chơi hiện có của tôi hoặc chỉ bắt đầu một cái gì đó mới.

Tôi nghĩ rằng các trò chơi thực sự tuyệt vời để học lập trình. Ngay cả với ít kinh nghiệm, bạn có thể tạo ra những điều nhỏ nhặt, mang lại cho bạn những khoảnh khắc tự hào nhỏ. Bởi vì bạn tạo ra một cái gì đó, đó là niềm vui. Xây dựng các ứng dụng thực tế là khá vô nghĩa, bởi vì phải mất rất nhiều công sức để tạo ra thứ gì đó, nó thực sự hữu ích, trong khi thật đơn giản để tạo ra một trò chơi nhỏ, lại gây nghiện.

Bạn có thể thực sự muốn sử dụng một ngôn ngữ giáo dục (trong trường hợp của tôi, đây là Pascal và khi nhìn lại, tôi nghĩ nó đã được chứng minh là một lựa chọn khá tốt). Rất nhiều trong số chúng đặc biệt nhằm tạo ra các trò chơi và như vậy.

Tạo các ứng dụng không chỉ là tạo các thuật toán. Bạn phải thiết kế các tính năng, bạn cần tổ chức và cấu trúc mã của mình theo các lớp và mô-đun khác nhau. Không giống như các vấn đề khá "nguyên tử" mà bạn đưa ra ở trường đại học, các ứng dụng đôi khi được phát triển tốt nhất theo cách tăng dần. Bạn bắt đầu với một cái gì đó và bạn thêm những thứ trên đầu trang của nó. Vì vậy, đã có một cái gì đó để bắt đầu (như trong một số ngôn ngữ được liệt kê trong bài viết trên wikipedia), bạn tiết kiệm cho mình rất nhiều sự thất vọng và bắt đầu tạo ra một cái gì đó ngay lập tức. (Một đồng nghiệp của tôi bắt đầu lập trình bằng cách viết quake 2 mod). Tại một số điểm, bạn sẽ đến để tìm ra những hạn chế của các công cụ dễ sử dụng này, nhưng cho đến lúc đó, bạn sẽ có cái nhìn sâu sắc và hiểu biết hơn rất nhiều. Có lẽ là đủ, để thực hiện lại chức năng họ đã cho bạn để bắt đầu với chính mình.

2
back2dos

Lập trình là về giải quyết vấn đề và giao tiếp, không viết nhiều mã. Mã chỉ là một điều cần thiết, bạn thường nên cố gắng viết ít mã hơn, không nhiều hơn.

Nếu bạn không biết bắt đầu từ đâu, có lẽ bạn không gặp vấn đề gì!

Nhìn vào Linux và các hệ thống tương tự Unix khác: tất cả chúng đều bao gồm nhiều ứng dụng nhỏ chỉ làm một việc, nhưng làm tốt .

Khi tôi cần một tập lệnh để tìm 10 tệp lớn nhất trong một thư mục trên máy tính của mình, tôi đã không đọc sách. Tôi chỉ googled và sử dụng một trong những giải pháp hiện có. Tôi đã viết bất kỳ mã? - Không. Vấn đề đã được giải quyết chưa? - Đúng. Chương trình một dòng này có hữu ích không? - Heck vâng.

Các chương trình có hàng ngàn dòng mã thường được viết bởi nhiều hơn một lập trình viên. Bạn sẽ không thể viết toàn bộ hệ điều hành một mình và bạn không cần phải viết. Họ cũng thường sử dụng các mánh gian lận như kiểm soát phiên bảnkiểm tra đơn vị .

2
kolobos

Ở trường đại học, có một lớp gọi là chương trình thực hành về cơ bản đã dạy đoạn đường nối này. Ban đầu, bạn được cấp UI cho một ứng dụng mua sắm cơ bản và phải viết mã phụ trợ, tháng cuối cùng là Tetris từ đầu. Tôi nghĩ rằng khoảng 50% sinh viên mới (không học lại lớp) đã thất bại, bởi vì việc gia tăng từ nhỏ đến lớn là vô cùng khó khăn.

Tôi muốn đề xuất một hoặc nhiều điều sau đây:

  • Tải về một dự án nguồn mở và thêm một cái gì đó. Nó không phải là hữu ích hay tốt, nhưng bạn sẽ phải xem cấu trúc, điều này sẽ cho bạn cảm giác về dự án lớn được xây dựng như thế nào.

  • Chỉ cần thiết kế dự án cuối cùng của bạn trên giấy, với các mũi tên cho phụ thuộc. Nếu bạn đang làm rắn, bạn có thể có đầu rắn, đuôi rắn, thức ăn, không gian trống, tường, bảng, hướng hiện tại, v.v. Có thể giúp bạn nhận ra nếu dự án của bạn lớn hơn nhiều so với bạn nghĩ.

  • Lấy một dự án cơ bản, và làm cho nó ngày càng lớn hơn. Bạn có thể sẽ thực hiện nhiều thao tác tái cấu trúc và hy vọng bạn sẽ học được cách thực hiện các dự án nhỏ hơn có thể dễ dàng thêm vào.

  • Nếu bạn biết ai đó có kinh nghiệm, hãy nói cho họ biết ý tưởng của bạn cho một dự án và yêu cầu họ viết các lớp của bạn + một số phương pháp quan trọng, có thể sẽ mất một giờ hoặc lâu hơn. Bằng cách đó, bạn có thể chỉ cần điền vào các phương thức và luôn biết bạn cần làm gì tiếp theo.

Cuối cùng, bất cứ điều gì bạn làm, có lẽ bạn nên sử dụng mẫu thiết kế cơ bản MVC (Model, View, Controller). Không đi sâu vào chi tiết, hãy đặt chế độ xem (UI) của bạn vào 1+ lớp, bộ điều khiển của bạn (Đầu vào, đầu ra, v.v.) thành 1+ lớp và Mô hình của bạn (Logic, Dữ liệu, về cơ bản là mọi thứ khác) vào một số lớp. Đó là một cách dễ dàng để có được tổ chức cơ bản.

Hãy nhớ rằng, bước này là khó khăn. Đúng là một số người đơn giản là không thể lập trình, nhưng có lẽ bạn chỉ bị mắc kẹt ở giai đoạn này. Chúc may mắn!

2
Mark

Hãy thử nghĩ ra chương trình nhỏ nhất bạn muốn và viết mã cho nó. Mới hôm nọ tôi đã viết mã tự động tải xuống mọi tệp từ danh sách các tệp. Đó thực sự là phần dễ dàng. Giờ chủ yếu dành cho việc tạo GUI, tải nó và lưu các cài đặt và những thứ đơn giản nhỏ như thế. GUI là khoảng trống thời gian.

Ngoài ra tôi đề nghị sử dụng một ngôn ngữ với một thư viện đồ sộ (không thành vấn đề nếu nó di động hay không). Và một ngôn ngữ được biên dịch tĩnh nếu bạn bắt đầu (có nghĩa là không Ruby , Python hoặc JavaScript). Tôi thích .NET sử dụng ngôn ngữ C # . Bạn có thể thử Boo với SharpDevelop hoặc sử dụng C # hoặc VB.NET bằng cách sử dụng Visual Studio Express . Tôi thích Visual Studio vì tôi là một người dùng quyền lực và sử dụng những thứ như Ctrl + -, Ctrl + [ Ctrl + ',' . Nhưng bất cứ điều gì với điểm dừng và callstack là tốt. Lý do duy nhất tôi có thể đứng ra để gỡ lỗi mã JavaScript là vì Fireorms có những thứ này (cùng với cửa sổ ngay lập tức và đồng hồ).

1
user2528

Tôi đã chết quá nhiều trong một số trò chơi ZX Spectrum , vì vậy cách duy nhất là thêm nhiều sinh mạng. Tôi đã có một cuốn sách, nó mô tả mã nào và nơi tôi cần thay đổi, vì vậy nó khá dễ dàng. Sau đó, tôi tìm thấy cách thêm đạn dược (không may là trò chơi trở nên vô nghĩa sau đó).

Vì vậy, theo quan điểm của tôi, cách tốt nhất để học - là đạt được các mục tiêu nhỏ và dễ dàng. Đối với tôi đó là sửa đổi mã hiện có. Nếu bạn hài lòng với mọi chương trình bạn gặp, có lẽ lập trình không dành cho bạn?

1
Konstantin Petrukhnov

Tôi đoán vấn đề của bạn xuất phát từ: 1. sự nhầm lẫn giữa lý thuyết và thực tiễn, và cũng là ... 2. ... bạn phải nhận ra rằng mã của bạn sẽ được chạy bởi mã của người khác. 3. bạn không thể mã hóa một cái gì đó nếu bạn không biết gì về những gì bạn có thể làm. 4. Bạn biết một nửa khó khăn

  1. Biết một ngôn ngữ bằng lý thuyết không có nghĩa là bạn "nói" nó: đó là sự khác biệt giữa đọc tiếng Anh và nói nó. Ngoài ra số lượng lớn các công cụ khác nhau có sẵn để biên dịch, liên kết, chỉnh sửa mã nguồn sẽ khiến đầu bạn quay cuồng.

  2. khi học cách lập trình, hầu hết thời gian một thiết bị đầu cuối được sử dụng để nhập/xuất văn bản, bởi vì đây là cách đơn giản nhất để xử lý lập trình. Trong thực tế, các lập trình viên sử dụng các thư viện (như Qt), các khung (Django tôi đoán) và các mã phím tắt khác để có hiệu quả. Tất nhiên nếu bạn cảm thấy bạn có thể tự viết bánh xe của mình, đừng phát minh lại và đọc sách về thiết kế trình biên dịch và thiết kế kernel: có rất nhiều điều để học trong những điều này: có thể bạn cảm thấy thật ngu ngốc khi bỏ các ứng dụng không đòi hỏi nhiều về công nghệ.

  3. Phát minh ra một cái gì đó! Tất nhiên bạn có thể làm một trình soạn thảo văn bản, một trò chơi, v.v. Vấn đề là, bạn sẽ không làm những điều đó nếu bạn không thấy bất kỳ lý do nào: những chương trình này sẽ vô dụng đối với bạn nếu mọi thứ bạn nghĩ đã được thực hiện . Cá nhân tôi vẫn mơ ước có thể mã hóa giao thức p2p phi tập trung giống như facebook với trò chuyện, tin nhắn ngoại tuyến, v.v ... tất cả trong một để có thể sử dụng với các thiết bị nhúng không dây. Internet mang đến rất nhiều khả năng, đừng quên suy nghĩ về nó.

  4. Trên thực tế, lý thuyết là cần thiết để thực hành, nhưng đó không phải là tất cả: thuật toán và kỹ thuật không phải là một phần của lý thuyết lập trình, có rất nhiều mô hình và cách "chuẩn" khác để thực hiện mã của bạn: mẫu thiết kế, danh sách liên kết, Vân vân.

1
jokoon

"Suy nghĩ ra khỏi hộp"

Này, tôi đã tự hỏi mình những câu hỏi tương tự năm năm trước (lúc đó tôi chưa nghe về Stack Exchange). Học lập trình mỗi khi không có ý nghĩa, bạn cần phát triển một cái gì đó.

Xác định những gì để phát triển

1) Mục tiêu nhỏ làm cho các dự án đầu tiên nhỏ và thành công

2) Lập kế hoạch để bạn có những phần nhỏ hoạt động rõ ràng và cho bạn thấy sự tiến bộ

3) Tìm thứ gì đó mà bạn đam mê nhưng vẫn đủ nhỏ để có thể đạt được

  • Tôi xây dựng các album cá nhân - thứ mà tôi đã có được một số kiến ​​thức về Flash, Photoshop
  • Tôi xây dựng blog cá nhân của riêng mình - đã đạt được một số PHP kiến ​​thức
  • Mua tên miền Internet - có được một số kiến ​​thức máy chủ

  • Tôi tìm thấy nhiều dự án tự do - Tôi đọc các yêu cầu của họ và cố gắng xây dựng các ứng dụng của riêng mình, tôi đã có được nhiều kiến ​​thức về lập trình, tài liệu, v.v.

1
RSK

NHƯNG, tôi vẫn không thể tìm ra cách viết một chương trình làm bất cứ điều gì hữu ích.

Có thật không?? Chà, tôi cho rằng nếu bạn chỉ đọc những cuốn sách và không làm bất kỳ chương trình ví dụ nào và cứ thế thì điều đó là có thể, nhưng có vẻ hơi cường điệu.

Dù sao, lời khuyên tốt nhất là hãy bắt đầu thực hiện một số ý tưởng mà bạn quan tâm. Nếu bạn có hứng thú thực sự thì nó có thể bắt đầu nhỏ và phát triển và phát triển. Đó thường là những gì xảy ra với tôi. Tôi có thể bắt đầu một dự án chỉ vì niềm vui của nó, nghĩ rằng nó sẽ chỉ là một dự án thử nghiệm nhỏ. Sau đó tôi thêm và thêm ....

1
user11432

Tôi nghĩ một phần của vấn đề là khi bạn đọc sách lập trình, họ chỉ dạy bạn ngôn ngữ. Họ không đề cập rằng để lập trình hầu hết mọi thứ, bạn cần truy cập để lập trình LIBRARIES và SDKS, v.v. Chỉ cần biết ngôn ngữ không may là không đủ.

1
David-S

Một vấn đề khác là, bạn cần một ngôn ngữ lập trình khác tùy thuộc vào những gì bạn đang cố gắng lập trình.

Nếu bạn muốn lập trình một ứng dụng Windows mở rộng sản phẩm của Microsoft, bạn phải sử dụng .NET C # hoặc VB.NET hoặc VBScript. Nếu bạn muốn lập trình iPhone, bạn phải sử dụng Objective-C, Java cho Android, Silverlight cho Windows Mobile, có thể Java cho các ứng dụng tài chính, v.v.

Không giống như bạn có thể học một ngôn ngữ và sau đó có thể lập trình bất cứ điều gì bạn muốn ...

1
David-S

Bạn không cần phải có một ý tưởng tuyệt vời để bắt đầu lập trình một cái gì đó. Tôi sẽ bắt đầu từ phần dễ dàng. Giống như, một chương trình mà bạn đã sử dụng nó. Cố gắng làm một cái gì đó mà bạn đã biết làm thế nào nó hoạt động. Đối mặt với vấn đề của bạn, vì vậy bạn sẽ học nó nhanh hơn. Khi bạn có nhiều kinh nghiệm hơn, bạn sẽ bắt đầu có một số ý tưởng tốt về các chương trình để làm cho cuộc sống của bạn dễ dàng hơn trong khi lập trình, hoặc chỉ là một chương trình tốt để làm điều gì đó mà bạn chưa từng nghĩ về nó trước đây. Tôi đã lập trình Java trong gần một năm và các ngôn ngữ khác trong một vài năm. Phải mất thời gian để bắt đầu làm những gì tôi thực sự muốn làm. Tôi mới bắt đầu làm công việc của mình. Cảm ơn StackOverflow. Tôi không biết về nó trước đây.

1
pringlesinn

Có lẽ bạn có thể chọn một ngôn ngữ kịch bản để bắt đầu. Tôi bắt đầu lập trình với ngôn ngữ C. Theo tôi, ngôn ngữ C rất dễ để bắt đầu, nhưng cần nhiều thời gian hơn để biết thuật toán và một cái gì đó về hệ điều hành. Và mỗi khi tôi tập thể dục chỉ đơn giản là với GUI GUI, điều đó khiến tôi chán nản.

Và sau đó tôi đã chọn một ngôn ngữ kịch bản có tên ActionScript để bắt đầu. Ngôn ngữ kịch bản là ngôn ngữ hướng đối tượng và nó có thể điều khiển hành vi của phim Flash. Ngôn ngữ kịch bản dễ thực hiện một số công việc gần với miền vấn đề, giống như trace("HelloWorld") trong ActionScript để xuất chuỗi. Và nó có một sức mạnh IDE để cho phép bạn kiểm tra nếu chương trình của bạn đang hoạt động tốt.

Trong Word, nếu bạn muốn bắt đầu lập trình theo cách nhanh, một ngôn ngữ kịch bản có thể là một lựa chọn tốt :-)

1
Tomyail

Bạn đã đọc Hoàn tất mã 2 và Lập trình viên thực dụng ?

Hai cuốn sách này đã dạy tôi nhiều hơn bất kỳ khóa học, hướng dẫn, sách hoặc video nào.

Lập trình là học cách xây dựng một cái gì đó từ đầu với một bộ công cụ cụ thể. Nhưng, nếu bạn không biết các nguyên tắc cơ bản, bạn không thể làm gì được.

1
Pablo

Vì vậy, có rất nhiều câu trả lời vì vậy hãy tha thứ cho tôi nếu tôi lặp lại nhiều điều đã được nói, nhưng đây là 2 xu của tôi.

Đầu tiên chọn một ý tưởng. Bất kỳ ý tưởng sẽ tốt, một cái gì đó đơn giản có thể sẽ tốt hơn sau đó lớn. Các dự án có xu hướng phát triển trong phạm vi của chúng rất nhanh (một số người gọi đó là tính năng creep).

Tiếp theo làm một bộ xương cho dự án. Điều này sẽ đòi hỏi một chút kiến ​​thức về kiến ​​trúc và thiết kế và có thể bạn sẽ hiểu sai trong mười lần đầu tiên bạn thử nó - tôi đã làm. Đơn giản chỉ cần đặt ra một cấu trúc tệp tốt và có thể là một bộ mã nhỏ hiển thị các phần quan trọng của hệ thống.

Lưu bộ xương trong VCS của bạn (chọn chất độc của bạn với cái này và giữ khi nó dẫn đến một cuộc chiến thần thánh). Khi bạn đã bắt đầu sử dụng VCS, liên tục sử dụng nó cho các thay đổi nhỏ sẽ trở thành bản chất thứ hai, nhưng hãy đảm bảo bắt đầu.

Bây giờ chọn một tính năng nhỏ, nhưng quan trọng cho hệ thống và làm cho nó. Đừng lo lắng về việc đảm bảo rằng bạn có mọi thứ được gói gọn một cách hoàn hảo và nó có thiết kế "tốt nhất" (sẽ phát triển cùng với hệ thống). Chỉ cần nhận được một cái gì đó sẽ làm việc. Ngoài ra nhận được một số bài kiểm tra đơn vị sẽ giúp đảm bảo bạn biết những gì đã xảy ra khi một cái gì đó bị phá vỡ, nếu bạn chạy các bài kiểm tra thường xuyên.

Xây dựng hệ thống của bạn. Đây cũng sẽ là thời điểm tốt để có được một hệ thống xây dựng tự động và tích hợp liên tục. Nếu bạn không biết chúng là gì thì hãy học nó và thử, hoặc tiếp tục tự chịu rủi ro; một trong hai cách tiếp tục làm việc.

Bây giờ chọn một tính năng khác và lặp lại và lặp lại và lặp lại.

Một khi bạn nghĩ rằng nó hoạt động tốt, hiển thị nó cho một người bạn. Người bạn không cần phải biết cách lập trình hoặc thậm chí biết chương trình đó làm gì. Một người bạn sẽ cảm thấy tốt khi hiển thị cho ai đó và hai người sẽ giúp bạn biết chính xác những gì hệ thống làm.

Nếu bạn đạt đến điểm mà bạn rất tự tin với những gì bạn đã làm, hãy phát hành trực tuyến và thử và nhận phản hồi. Một trung tâm lưu trữ hoặc chương trình con reditt lập trình viên có thể cung cấp cho bạn một số lời chỉ trích mang tính xây dựng. Hãy thử và tìm một giáo sư CS/SE và để anh ấy/cô ấy nhìn vào nó. Có thể hỏi một lập trình viên chuyên nghiệp. Chỉ cần có ý kiến ​​lập trình viên khác.

Khi bạn hoàn thành (hoặc có thể trước đó), bạn sẽ nhận ra rằng mã bạn đã viết ban đầu tệ hơn rất nhiều so với những gì bạn đã thực hiện gần đây. Điều đó là hoàn toàn tự nhiên và xảy ra với tất cả chúng ta. Bây giờ bạn cần tìm một dự án mới và tìm hiểu một cái gì đó mới - có thể là một chiến lược thử nghiệm mới hoặc cách sử dụng Kiến trúc hướng dịch vụ.

1
Jonathan

Một cái gì đó có thể giúp đỡ là nghĩ về một vấn đề đơn giản mà bạn gặp phải hàng ngày trong đó một cái gì đó bạn có thể làm bằng bút chì và giấy có thể được thay thế bằng một chương trình.

Điều này cung cấp cho bạn một vấn đề tương đối đơn giản với một giải pháp khá nổi tiếng chỉ cần một mức độ tự động hóa. Hãy nhớ rằng điều này không cần phải là MS Word/Wordman/NotePad tiếp theo; chỉ cần một cái gì đó giải quyết vấn đề (đơn giản) của bạn.

Ví dụ, một vấn đề mà tôi tiếp tục thực hiện khi làm việc với một ngôn ngữ mới là một ứng dụng máy chấm công đơn giản. Ứng dụng này được sử dụng để theo dõi số giờ có thể thanh toán cho các dự án khác nhau trong một ngày. Một chương trình khá đơn giản với rất nhiều vấn đề nhỏ, như cách bạn xử lý khởi động lại vào giữa ngày hoặc làm thế nào để bạn thêm/xóa các mục khỏi danh sách của mình.

1
Ken Henderson

Viết một đặc tả. Bạn muốn chương trình của bạn làm gì? Các màn hình (nếu là chương trình dựa trên giao diện người dùng) logic, đầu vào/đầu ra, v.v. Giữ phạm vi giới hạn ở những gì bạn có thể làm trong một khoảng thời gian hợp lý (một tuần? Một tháng?).

Sau đó xây dựng nó. Bám sát đặc điểm kỹ thuật, làm cho nó hoạt động theo những gì đặc điểm kỹ thuật cần. Chắc chắn bạn sẽ gặp phải phiền nhiễu, chắc chắn bạn sẽ phải thực hiện một số nghiên cứu vì bạn chưa bao giờ phải đối mặt với một vấn đề cụ thể nào trước đây, nhưng bạn sẽ xây dựng một cái gì đó bạn muốn xây dựng. Điều này khác với việc xây dựng một cái gì đó mà bạn chỉ có thể 'xây dựng'.

Khi bạn hoàn thành, hãy cấu trúc lại mã của bạn, cố gắng làm cho nó hiệu quả hơn. Sau đó, nếu bạn nghĩ rằng chương trình của bạn vẫn chưa được thực hiện, hãy bắt đầu lại, cải thiện đặc tả, cải thiện mã và tiếp tục làm điều này.

Hãy nhớ rằng, hầu hết các phần mềm thương mại đều giải quyết được nhu cầu .. Điều rất quan trọng là xác định nhu cầu và giải pháp để đáp ứng nhu cầu đó trước khi thực sự giải quyết vấn đề. Và khi nhu cầu ngày càng lớn hơn, phần mềm của bạn cũng sẽ phát triển theo thời gian!

1
Roopesh Shenoy

Tôi học lập trình bởi vì tôi biết những gì tôi muốn lập trình.

Lập trình đòi hỏi kỹ năng giải quyết vấn đề, điều khó học. Cố gắng tái tạo một cái gì đó "hàng ngày", giống như một chương trình máy bán hàng tự động tính toán các thay đổi trong tiền xu, và cũng là một mô phỏng thang máy.

0
Ming-Tang

Thách thức lớn nhất để học cách lập trình là tìm ra thứ gì đó mà ai đó thấy hữu ích.

Vấn đề lớn nhất của tôi trong lập trình cho bản thân mình là luôn luôn phát minh ra những vấn đề cần giải quyết.

Tôi bắt đầu lập trình vào giữa những năm 1980 bằng cách tham gia một khóa học và sau đó làm việc cho một công ty nói cho tôi biết phải giải quyết vấn đề gì. Lựa chọn thay thế của bạn là làm những gì tôi đã làm trong những năm 1990 khi tôi muốn học JavaScript - Tôi đã tham gia các cộng đồng (một trong số đó là các cuộc gọi Stack Overflow trang web được nhấn mạnh - bắt đầu việc hạ cấp ...) nơi mọi người đặt câu hỏi và nhận xét với các đề xuất của tôi về cách giải quyết vấn đề. Có một nhiệm vụ cụ thể với đầu vào và đầu ra đã biết, thực sự đã giúp tôi tập trung vào việc tìm câu trả lời hoặc câu trả lời tương tự và áp dụng điều này vào vấn đề trong tay. Sau vài năm trả lời câu hỏi, tôi đã thành thạo.

Bây giờ tôi đang làm tương tự với jQuery. Tôi sẽ có một thời gian khó khăn để học cú pháp jQuery mà không có vấn đề cụ thể có thể được giải quyết bằng cách sử dụng khung đó.

0
mplungjan

"Bí mật là không có bí mật" - Kung Fu Panda. Trước tiên đừng hoảng sợ, chọn một ngôn ngữ và bắt đầu viết một cái gì đó như trò chơi tic tac toe và tiếp tục thêm các tính năng mới. Bạn đã đề cập rằng bạn đã đọc quá nhiều sách nhưng bạn đã thực hiện những gì bạn học? Cố gắng nhìn xung quanh bạn và tìm hệ thống thủ công nào bạn có thể chuyển đổi sang tự động hóa, hoặc chương trình hiện tại bạn có thể tái thiết kế. Kiên nhẫn và Trí tưởng tượng là chìa khóa để thành công trong lập trình mặc dù tôi không phải là một lập trình viên giỏi nhưng tôi đang thử những gì tôi chia sẻ và nó hoạt động. :)

0
CodeCracker

Hãy nghĩ về một cái gì đó mà bạn sẽ thấy hữu ích và thử làm nó. Ý tôi là một cái gì đó hợp lý, không phải Photoshop :-)

0
nih

Cách duy nhất bạn sẽ học lập trình là ... viết chương trình.

0
user12062

Sự khác biệt chính giữa các ứng dụng lớn thành công và các bài tập học thuật thường là trước đây là được thiết kế so với tập hợp yêu cầ. Nếu bạn chỉ đơn giản là bắt đầu với một ý tưởng mơ hồ trong đầu và bắt đầu viết mã, bạn sẽ không thể đi xa được.

Vì vậy khả năng lập trình có lẽ không phải là vấn đề ở đây; những gì bạn thực sự cần để giúp bạn tiến xa hơn là kỹ thuật phần mềm kỹ năng; tức là khả năng nắm bắt và chỉ định các yêu cầu của dự án, sau đó thiết kế kiến ​​trúc phần mềm và thiết kế chi tiết để đáp ứng các yêu cầu đó - đây là bản đồ đường đi sẽ giúp bạn đi đúng hướng trong suốt quá trình phát triển. Điều đó không có nghĩa là các yêu cầu và thiết kế cần phải được hoàn thành trước khi bạn bắt đầu viết mã (phương pháp thác nước), phát triển gia tăng là một cách tiếp cận linh hoạt hơn; nhưng bạn nên có một số loại khung và ý tưởng về cách các yếu tố ứng dụng sẽ tương tác và giao tiếp.

Hơn nữa, một đặc tả và thiết kế yêu cầu ít nhiều cần thiết nếu việc phát triển dự án được thực hiện bởi nhiều hơn một nhà phát triển (một tính năng phổ biến khác của các dự án lớn).

Một tính năng khác của các ứng dụng quy mô lớn thành công là một động lực mạnh mẽ để hoàn thành. Điều gì sẽ thúc đẩy bạn làm điều đó tôi không thể nói nhưng trong trường hợp của tôi, tôi được trả tiền cho nó, tôi hiếm khi viết phần mềm cho vui, nhưng được trả tiền để làm những gì bạn có thể làm miễn phí trong mọi trường hợp là một cách tuyệt vời kiếm sống.

0
Clifford

Đơn giản, cố gắng làm tốt hơn viết trong cuốn sách của bạn.

0
user12069

Tôi đã thấy rằng một cái gì đó có lợi cho tôi rất nhiều trong lĩnh vực này là nhìn vào mã mà người khác đã viết. Ý tôi là mã họ viết bên ngoài trường vì các bài tập ở trường thường không áp dụng được cho thế giới thực.

0
THE DOCTOR

Bạn có thể tìm thấy nhiều câu trả lời hay ở đây, nhưng vẫn vậy, hãy thêm điều này.

Trước hết, đừng hoảng sợ. Rất nhiều người đã học lập trình ở các mức độ khác nhau, bạn sẽ tìm thấy cấp độ phù hợp với mình, đó là điều chắc chắn. Làm việc chăm chỉ để đạt đến một mức độ khá cao, một bước một lần.

Bắt đầu từ nhỏ. Tôi nhớ một trong những ứng dụng đầu tiên của tôi, về cơ bản nó là tiền đề cho một bộ mã hóa MP3. Không có gì lạ mắt, nó chỉ bắt đầu một ứng dụng dòng lệnh với các thông số khác nhau. Nhưng tôi rất thích nó!

Tái bút: Một trong những kỹ năng hữu ích nhất là bạn nên luyện tập mọi lúc: làm thế nào để hỏi tốt hơn. Nếu bạn có thể hỏi một cách thực sự tốt, bạn sẽ tìm thấy câu trả lời ngay lập tức.

0
Scorchio

Bạn đã chơi game Cờ vua ?? Người ta có thể dạy bạn các động tác, nhưng làm cho chúng hữu ích là mối quan tâm của riêng bạn. Bạn không thể học từ việc xem một ván cờ đã chơi b/w hai cá nhân thay vì tự chơi; Tương tự học từ một HỮU ÍCH dự án như bạn đã nói, sẽ không giúp ích. Bạn cần đi sâu vào các yêu cầu của riêng bạn và thực hiện một dự án từ đó.

Mỗi dự án đều có yêu cầu riêng của mình. Ít khi, bạn sẽ tìm thấy một dự án sử dụng tất cả các tính năng của ngôn ngữ. Do đó, các cuốn sách tập trung vào các tính năng cơ bản, thay vì lấy một dự án và đọc ra.

Thành thật với bạn, tôi cũng đã tìm kiếm một mẫu ứng dụng WPF hoạt động khi tôi phải thực hiện một vài tháng trước. Không tìm thấy gì và sau đó đọc từ sách và internet và làm mọi thứ trôi qua.

Và điều cuối cùng là những ứng dụng hoặc dự án đã được thực hiện này khiến bạn bối rối hơn bao giờ hết, bởi vì chúng được tạo ra bởi các chuyên gia có phong cách và tinh chỉnh riêng. Để đạt đến cấp độ đó, bạn cần quên đi mọi thứ khác và chỉ cần bắt đầu viết mã và sau đó, StackOverflow luôn ở đó để giúp bạn.

0
Pankaj Upadhyay

Vâng, thật đáng ngạc nhiên khi có nhiều "bộ phận chuyển động" tham gia vào việc làm cho phần mềm/phần cứng của chúng tôi chạy. Một phần là do các vấn đề cực kỳ phức tạp và cần được chia thành các phần có thể quản lý được. Một phần là do các vấn đề cực kỳ phức tạp và không ai biết họ đang làm gì. :) Chúng tôi có hàng chục ngôn ngữ lập trình và hàng trăm khung lập trình và thư viện. Tất cả mọi thứ được hộp đen và lớp. Bạn không thể làm bất cứ điều gì hữu ích chỉ trong một lớp của mớ hỗn độn này. Cần học và nắm vững những hạn chế và sự kỳ quặc của nhiều lớp. Và tự mình viết mọi thứ gần như không thể. Những điều đơn giản phát triển khó khăn không thể tưởng tượng được khi cơ sở mã tăng lên.

0
AareP