Quá khứ Nếu câu lệnh Mảng, vòng lặp Bây giờ thì sao?


9

Tôi đã từ bỏ việc lập trình hơn một năm trước khi tôi tiếp tục va vào bức tường này. Tôi đang xem lại chủ đề này vì tôi muốn tạo ứng dụng Android cơ bản. Nhưng tôi cảm thấy rằng kiến ​​thức hạn chế của tôi sẽ không đủ.

Đây là vấn đề của tôi.

Tôi đã đọc một vài cuốn sách và xem các video hướng dẫn về C # / Java, làm theo các ví dụ, sau đó hoàn thành cuốn sách. Cuối cùng, họ dường như luôn khiến tôi chết lặng không biết phải làm gì tiếp theo.

Thật là một ý nghĩa khi họ dạy bạn từ ứng dụng "hello world" cơ bản của bạn cho đến khi và các mảng sau đó dường như mong đợi bạn biết cách đi vào thế giới mã hóa và tạo ra bất cứ điều gì.

Am i thiếu cái gì ở đây? Tôi biết đây là những khối xây dựng của tất cả các chương trình nhưng những cuốn sách mà tôi đọc không bao giờ thực sự chỉ cho tôi phải làm gì tiếp theo.

Câu trả lời dễ dàng mà tôi cho là sẽ 'bắt đầu viết mã', nhưng ở đâu? Tôi đọc "Head First Java" chẳng hạn; cho đến khi họ bảo bạn lấy mọi thứ bạn đã học và tạo ra một trò chơi đua chó ....

"cố gắng không gian lận và nhìn vào mã nguồn được cung cấp, bạn sẽ có thể làm điều này ngay bây giờ" _ đó không phải là một trích dẫn chính xác nhưng về cơ bản đó là những gì tôi đã nói .......

Nửa giờ trước họ chỉ giải thích làm thế nào để tạo mảng, sau đó không có bất kỳ lý thuyết nào tôi có nghĩa là để tạo ra một trò chơi làm việc?

Lý do tôi hỏi điều này là vì tôi sợ rằng đây là tất cả những gì tôi phải biết để bắt đầu viết mã, nhưng tôi cảm thấy như mình đã được tặng một hộp công cụ nhỏ và được bảo xây một tòa nhà chọc trời.

Cảm ơn vì bất cứ lời khuyên nào


"Trò chơi đua chó" có thể mang nhiều ý nghĩa. Đối với người mới bắt đầu, nó thậm chí có liên quan đến bất kỳ đồ họa? Miễn là những gì bạn đang tạo không liên quan đến bất kỳ đồ họa nào thì tôi sẽ nghĩ rằng nó hoàn toàn phù hợp cho người mới bắt đầu. Có thể làm hangman thay vì chỉ để tránh suy nghĩ về hình ảnh ...
jhocking

Đó là hoàn toàn có thể xây dựng một tòa nhà chọc trời với hộp công cụ nhỏ - chương trình lớn chỉ là tổ chức các bộ sưu tập của một LOT của các bit nhỏ. Tuy nhiên, bạn sẽ không thể NGAY BÂY GIỜ - bạn phải bắt đầu xây dựng một chuồng chim và làm theo cách của bạn. Như jhocking đã nói, đừng cố làm bất cứ điều gì với đồ họa - có một lý do chính đáng cho những thứ bắt đầu luôn dựa trên văn bản không được định dạng.
Loren Pechtel

Câu trả lời:


10

Thật là một ý nghĩa khi họ dạy bạn từ ứng dụng "hello world" cơ bản của bạn cho đến khi và các mảng sau đó dường như mong đợi bạn biết cách đi vào thế giới mã hóa và tạo ra bất cứ điều gì.

Am i thiếu cái gì ở đây? Tôi biết đây là những khối xây dựng của tất cả các chương trình nhưng những cuốn sách mà tôi đọc không bao giờ thực sự chỉ cho tôi phải làm gì tiếp theo.

Thật ra, không. Họ không. Các khối xây dựng của tất cả các chương trình là trừu tượng và tái sử dụng. Nhiều ngôn ngữ lập trình thậm chí không mảng hoặc ifs hoặc vòng lặp.

Có một số cuốn sách hay dạy bạn cách lập trình trái ngược với cách ngôn ngữ lập trình cụ thể hoạt động, dường như đó là những cuốn sách bạn đang đọc.

Cách thiết kế chương trình hay còn gọi là HtDP là một cuốn sách như vậy. Nó dạy bạn, tốt, làm thế nào để thiết kế chương trình. Và nó thực hiện điều này bằng cách cung cấp cho bạn công thức để làm theo cách phân tích vấn đề, giải quyết chúng, biến chúng thành thuật toán và hơn nữa thành các chương trình làm việc.

Lưu ý rằng "công thức" về cơ bản là một từ khác của "chương trình", vì vậy nói cách khác, cuốn sách dạy bạn các chương trình cho con người chạy trong đầu để tạo ra các chương trình được thực hiện bởi máy tính. Làm thế nào là mát mẻ? :-)

Các tác giả hiện đang làm việc trên một bản nháp cho phiên bản thứ hai của HtDP , mà bạn có thể muốn đọc thay vì phiên bản đầu tiên. Tài liệu về lập trình mệnh lệnh đã bị xóa và sẽ được trình bày trong tập thứ hai chưa được ghi nhận Cách thiết kế các thành phần , nhưng bạn có thể đọc các chương còn thiếu từ phiên bản đầu tiên.

Lưu ý rằng HtDP giả định không có kiến ​​thức lập trình và được nhắm mục tiêu vào học sinh trung học. Nhưng đừng để điều đó ngăn cản bạn: điều đó chỉ có nghĩa là bạn có thể hoàn thành một số chương đầu nhanh hơn, nhưng tôi không nghĩ bạn sẽ chán.

Tóm tắt cụ thể cũng là một đọc tốt dọc theo các tĩnh mạch tương tự. Giống như HtDP, nó không thừa nhận bất kỳ kiến ​​thức lập trình nào.

Một cuốn sách khác mà bạn có thể nghe được đề cập là Cấu trúc và Giải thích các Chương trình Máy tính hay còn gọi là SICP. Đây là một trong những cuốn sách lập trình vĩ đại nhất từng được viết, và một lần nữa, nó không thừa nhận bất kỳ kiến ​​thức lập trình nào.

Đó , tuy nhiên, hướng đến người mới hoàn thành nghiên cứu người tại MIT . Và vì vậy, mặc dù nó không có bất kỳ kiến ​​thức lập trình nào, nhưng nó lại thừa nhận khá nhiều kiến thức về miền , ví dụ như trong các lĩnh vực kỹ thuật điện, vật lý và toán học. Lưu ý: những điều này không liên quan gì đến các khái niệm được dạy, chúng chỉ cần thiết để hiểu các bài tậpví dụ . Vì vậy, tốt hơn là nên đọc HtDP hoặc Concrete Trừu tượng trước, sau đó đọc SICP.


1
Tôi chưa bao giờ nghe về một ngôn ngữ lập trình mà không có một iftuyên bố hoặc một loại nào đó loop: Nó sẽ không hoàn thành nếu không có chúng.
Tái lập Monica - M. Schröder

@Martin Schröder: Tồn tại các ngôn ngữ lập trình không có loopcâu lệnh và chúng đã hoàn thành Turing.
Giorgio

@Giorgio: Chẳng hạn? AFAIK bạn cần một số loại vòng lặp / goto.
Phục hồi Monica - M. Schröder

2
@ MartinSchröder: Lambda Tính là Turing-Complete (trên thực tế, đó là ngôn ngữ mà thuật ngữ đó được phát minh) và nó chỉ có chức năng trừu tượng hóa và ứng dụng chức năng. Nó thậm chí không có đệ quy, bạn phải mã hóa bằng cách sử dụng bộ kết hợp fixpoint! Trên flipside: có rất nhiều ngôn ngữ lập trình không hoàn thành Turing, như SQL (trước 2003), hoặc tinh tế hơn, C (Tính đầy đủ Turing yêu cầu lưu trữ vô hạn, nhưng C đảm bảo rằng bạn có thể lấy địa chỉ của bất kỳ thứ gì và lưu trữ nó trong một biến có kích thước hữu hạn).
Jörg W Mittag

2
@ MartinSchröder: Hoặc, một chiến thuật khác: có các ngôn ngữ lập trình trong đó chỉ đơn giản là biên dịch chương trình có thể buộc trình biên dịch giải quyết các vấn đề khó khăn. Trong C #, bạn có thể mã hóa các vấn đề 3-SAT như các vấn đề về độ phân giải quá tải và làm cho trình biên dịch giải quyết chúng, và trong Haskell, bạn thực sự có thể mã hóa các vấn đề tương đương với Vấn đề Dừng vào hệ thống loại và làm cho trình biên dịch giải quyết chúng. Bạn dường như nghĩ "ngôn ngữ lập trình" là ngôn ngữ bắt buộc nhưng có nhiều ngôn ngữ không bắt buộc có thể đại diện cho các tính toán phức tạp.
Eric Lippert

5

Vâng, bạn không ở trong một tình huống duy nhất. Hầu hết các cuốn sách những người mới bắt đầu học ngôn ngữ lập trình có xu hướng tập trung nhiều hơn vào các khối xây dựng cơ bản của ngôn ngữ và đó là một điều tốt. Tuy nhiên, như đã xảy ra với bạn, cuối cùng, chúng tôi thấy mình rơi vào tình huống chúng tôi đã học mọi cách xây dựng ngôn ngữ nhưng không thể áp dụng điều đó để giải quyết một số vấn đề thực tế. Nói tóm lại, khoảng cách giữa các ví dụ văn bản và các chương trình thực tế chỉ có thể được thu hẹp khi bạn cố gắng chơi với mã (như Telastyn). Đây là những gì tôi thường làm trong khi học một số công cụ mới:

  1. Trong khi học từ cuốn sách, hãy cố gắng tìm một số tình huống thực tế trong đó một số ví dụ / kỹ thuật mã trong cuốn sách có thể được áp dụng.
  2. Cố gắng trộn các chương trình ví dụ được đưa ra trong cuốn sách để tạo ra thứ gì đó lớn hơn và phức tạp hơn. Sau đó cố gắng giảm thiểu mã và viết một mã khác cho kết quả tương tự.
  3. Google cho các dự án thực tế cho ngôn ngữ đang được xem xét.
  4. Sau khi bạn chắc chắn rằng bạn đã học được yếu tố ngôn ngữ cơ bản, hãy thử nghiệm với một khung bạn chọn. Lần đầu tiên, chọn một cái gì đó có một đường cong học tập dễ dàng hơn.
  5. Xem ra cho một số dự án hiện có và cố gắng nghiên cứu thiết kế của nó.
  6. Sử dụng các sách nâng cao dạy cho bạn nhiều công cụ thiết kế ứng dụng nâng cao hơn như các mẫu ứng dụng, thiết kế và triển khai OO, v.v.

Cuối cùng, tất cả về thực hành và nghiên cứu sẽ giúp bạn nâng cao kỹ năng lập trình và cuối cùng biến bạn thành một kiến ​​trúc sư của nhiều tòa nhà chọc trời.


2

Xem cái này cho C #. Nó rất hoàn chỉnh: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf Tôi đã sử dụng bản thân mình, chỉ nửa năm trước. Tôi sử dụng trình biên dịch #Develop với nó cho các ví dụ. Tôi không thể giúp bạn nhiều với Java vì tôi hầu như không bao giờ sử dụng nó.

Khi đến lúc lập trình, điều mà nhiều người không nhận ra là bạn thường sử dụng SDK hoặc khung bổ sung cho những gì bạn đang thiết kế. Vì vậy, đừng mong đợi chuyển ngay lập tức từ Java hoặc C # sang lập trình điện thoại, bởi vì bạn có thể cần một khung trung gian tốt và các đường cong học tập có thể gây mệt mỏi như chính các đường cong học tập cho ngôn ngữ lập trình. Mặc dù hướng dẫn về C # mà tôi đã đăng chỉ bao gồm C #, nhưng nhiều khái niệm mà nó trình bày được nhìn thấy trong các ngôn ngữ hướng đối tượng khác, như Java.

Chỉnh sửa: Kịch bản bạn mô tả là, không may, tuyến đường mà nhiều hướng dẫn theo. Bạn không cần phải làm theo hướng dẫn như vậy và nếu nó hoạt động ngược với cách bạn học, có lẽ tốt nhất là thử và chọn một hướng dẫn khác (tôi không biết về bất kỳ thứ gì, nhưng Google có thể làm được). Nhưng để chắc chắn, hãy kiểm tra xem tác giả của cuốn sách mà bạn đang mô tả có giải thích từng dòng mã không. Đừng lo lắng về việc bạn thông minh đến mức nào, chỉ có thần đồng mới có thể đi thẳng từ một cuốn sách đến một trò chơi đang hoạt động. Chỉ cần nhớ rằng, hướng dẫn không có nghĩa là đo lường khả năng tiêu chuẩn, vì vậy hãy tìm bất cứ điều gì dạy bạn tốt nhất và đừng nản lòng!


Câu trả lời tuyệt vời và tôi muốn nói thêm rằng bạn nên quyết định một dự án bạn muốn thực hiện. Google cách để giải quyết các vấn đề mà dự án trình bày. Bạn sẽ học được rất nhiều bằng cách tìm kiếm những cách tốt hơn để giải quyết các vấn đề bạn đang phải đối mặt.
chết

1

Vâng, đó là rất nhiều để làm cho các chương trình siêu cơ bản. Tại thời điểm này, bạn cố gắng thực hiện một chương trình phức tạp hơn một chút so với những gì bạn đã làm. Khi bạn cần làm một cái gì đó cụ thể và không biết làm thế nào ngay cả với một số công việc, sau đó bạn tìm kiếm trên Internet hoặc hỏi một giáo viên / người cố vấn. Điều này sẽ dẫn đến các tính năng nâng cao hơn (và khá thường xuyên đi vào ngõ cụt vì bạn vô tình chọn một thứ gì đó phức tạp hơn những gì bạn có thể làm).

Không có cuốn sách nào sẽ dạy bạn cách giải quyết vấn đề.

Không có cuốn sách nào sẽ giải thích cách thiết kế chương trình - đi kèm với thực tiễn. Không có cuốn sách nào sẽ dạy bạn làm thế nào để tạo ra một ứng dụng không tầm thường - có quá nhiều sắc thái; bạn sẽ học cách xây dựng triển khai đó chứ không phải những thứ như thế.

Cách tốt nhất để học vào thời điểm này là lao vào. Để chơi xung quanh với mã để tạo ra một cái gì đó. Giống như các nghệ sĩ thường bắt đầu vẽ những mẩu tin nhỏ vẽ nguệch ngoạc ngày càng tinh vi và ưa nhìn hơn, vì vậy các lập trình viên cần sự tiến bộ khám phá đó.


1
"Không có cuốn sách nào sẽ giải thích cách thiết kế chương trình" - Các tác giả của Cách thiết kế chương trình có thể không đồng ý :-)
Jörg W Mittag

1
@ JörgWMittag: Họ sẽ có một số kỹ thuật phổ biến và trình diễn các chương trình điển hình, nhưng bất cứ điều gì không tầm thường sẽ đòi hỏi một mức độ lớn về sự phán đoán của con người, mà đến năm 2013, vẫn không thể được cơ giới hóa.
tên của

1

Tôi thực sự không thể nhớ nếu tôi sử dụng một cuốn sách để lập trình, nhưng tôi đoán trong những ngày đó nó là một hướng dẫn tham khảo cú pháp thay vì một cuốn sách hướng dẫn. Nó dạy tôi những gì ngôn ngữ lập trình có thể làm, nhưng không phải cách xây dựng một ứng dụng thực sự với nó.

May mắn thay, có một số ví dụ trong cuốn sách mà tôi đã sử dụng để nhập vào (vâng, sau đó không có ví dụ mã nguồn có thể tải xuống) và sau đó cố gắng tìm ra cách nó hoạt động. Đó không phải là cách tối ưu để học lập trình, nhưng với tôi nó rất vui vào thời điểm đó.

Điều tôi khuyên bạn là bạn nên đặt cho mình một mục tiêu như " Tôi muốn xây dựng một ứng dụng Javascript vẽ một vòng tròn nảy " và sau đó sử dụng kiến ​​thức đã có của bạn để bắt đầu và tìm kiếm mọi thứ khác trong SDK / tài liệu ngôn ngữ và / hoặc tại đây trên SO.

Đó là cách tiếp cận tôi đang sử dụng khi tôi cố gắng nhảy sang một ngôn ngữ mới và học những bước đầu tiên của mình. Hầu hết những cuốn sách tôi đọc trong những ngày gần đây tôi không hài lòng vì tôi có cùng cảm giác thiếu một cái gì đó quan trọng . Nhưng may mắn là chúng ta có các internets ngay bây giờ, vì vậy bất kỳ ngôn ngữ nào bạn muốn học, bạn có thể tìm thấy mã nguồn ví dụ trên internet và sử dụng ngôn ngữ đó để tiếp tục việc học của mình.

chỉnh sửa Tất nhiên, một số sách tổng quát hơn dạy bạn cách thiết kế một ứng dụng hoặc quy trình nào (SCRUM, XP, V-Modell) để tuân theo là một bổ sung tốt cho kiến ​​thức ngôn ngữ thuần túy.


1

Tôi đồng ý với Jörg rằng bạn cũng nên đọc một số sách chung về các khái niệm lập trình thay vì học quá nhiều chi tiết về một ngôn ngữ cụ thể trong giai đoạn này. Về cuốn sách Cách thiết kế chương trình , nó được sử dụng như một tài liệu tham khảo trong khóa học này , có thể khiến bạn quan tâm.

Mặt khác, một công cụ khác mà những người khác không đề cập là nói rất nhiều với các nhà phát triển khác . Tôi nhớ rằng đối với tôi, một trong những cách học lập trình hiệu quả nhất là dành nhiều giờ để thảo luận với các đồng nghiệp hoặc các lập trình viên khác về các khía cạnh lập trình, ngôn ngữ lập trình, kỹ thuật hoặc các vấn đề cụ thể mà tôi đang gặp phải vào thời điểm đó. Truyền miệng kiến ​​thức vẫn có thể là một trong những phương tiện hiệu quả nhất để học các kỹ năng mới.


+1. Tôi biết những người đi đến hội nghị mà không đi đến một cuộc nói chuyện nào. Họ chỉ đến đó để lang thang trên hành lang và thảo luận vấn đề với những người hoàn toàn xa lạ, chỉ để có một quan điểm khác.
Jörg W Mittag

0

Tôi sẽ đề nghị tìm các dự án nguồn mở và biến chúng thành các hộp cát cá nhân. Sửa đổi các hành vi hiện có, thêm các hành vi mới và xóa một số quá. Chơi xung quanh, thực hiện ý tưởng của riêng bạn và "nếu tôi đã thử điều này".

Tôi không ủng hộ bạn chuyển đổi dự án nguồn mở của ai đó và tuyên bố đó là của riêng bạn.

Tôi đang nói hãy nhìn vào các dự án làm việc khác như một phương tiện để dạy bản thân cách đi đến các bước tiếp theo. Có rất nhiều trang web có sẵn với mã nguồn mở để tải xuống. Đây là một vài điều mà tôi nghĩ đến: CodePlex CodeProject


-5

Đó là cuộc sống lập trình viên. Bạn không biết một công nghệ, nhưng bạn phát triển một "thế giới xin chào" và bạn trở thành một chuyên gia. Trong các công ty (đời thực) đó là cách nó hoạt động. Chúc may mắn


2
Đó không phải là một câu trả lời rất hữu ích.
Svick
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.