C ++ khó hơn java reddit
Chào mừng đến với /r/học lập trình. Đây là danh sách một số câu hỏi thường gặp nhất trên subreddit này. Nếu câu hỏi của bạn là một trong những câu hỏi này, nó có thể đã được trả lời nhiều lần trước đây và bạn nên thử sử dụng các phương tiện tìm kiếm của reddit (xem trong thanh bên) để tìm câu trả lời trước đó trước khi đăng ở đây Show
Bắt đầuTôi bắt đầu từ đâu?Nếu bạn quan tâm đến việc học viết mã, sẽ rất hữu ích nếu bạn bắt đầu với tư duy đúng đắn. Video YouTube này của Kevin Cheers thực hiện rất tốt việc giải thích quan điểm đúng đắn mà bạn nên có khi bắt đầu Tiếp theo, bạn nên nhớ rằng không có cách học viết mã nào được thống nhất chung -- mọi người thích học theo một cách hơi khác và bạn có thể cần thực hiện một số thử nghiệm để tìm ra cách tiếp cận phù hợp nhất với mình. Tuy nhiên, phần lớn mọi người dường như học tốt nhất bằng cách sử dụng phương pháp sau đây, chúng tôi thực sự khuyên bạn nên thử
Dưới đây là một số điều chúng tôi khuyên bạn nên tránh làm
Và cuối cùng, hãy nhớ rằng học lập trình có thể là một quá trình lâu dài và khó khăn. Nếu việc học viết mã cảm thấy khó khăn, đừng nản lòng. Điều đó hoàn toàn bình thường -- nhiều người sẽ dành nhiều năm trong cuộc đời để học hỏi và rèn luyện trước khi họ cho rằng mình đủ năng lực để tìm việc làm hoặc đóng góp cho một dự án quan trọng. May mắn thay, chỉ mới bắt đầu không khó chút nào Tôi nên bắt đầu với ngôn ngữ lập trình nào?Có hai quan niệm sai lầm phổ biến khiến mọi người đặt câu hỏi này. Đầu tiên là thực sự có một ngôn ngữ lập trình "tốt nhất" để học và thứ hai là ngôn ngữ đầu tiên bạn học sẽ quyết định phần còn lại trong sự nghiệp lập trình của bạn sẽ như thế nào Trên thực tế, không có ngôn ngữ nào tốt nhất để bắt đầu và ngôn ngữ đầu tiên của bạn hầu như không có tác dụng lâu dài đối với sự nghiệp sau này của bạn. Các ngôn ngữ lập trình bề ngoài có thể trông rất khác nhau, nhưng phần lớn các khái niệm cơ bản sẽ chuyển từ ngôn ngữ này sang ngôn ngữ khác. Học một ngôn ngữ mới cũng sẽ trở nên dễ dàng hơn theo thời gian -- người mới bắt đầu có thể mất vài tháng trước khi họ cảm thấy thoải mái với ngôn ngữ đầu tiên của mình; Tất cả các lập trình viên nên có kinh nghiệm về nhiều loại ngôn ngữ. Khi bạn cảm thấy thoải mái với một ngôn ngữ, hãy chuyển sang một ngôn ngữ khác khác biệt theo một số cách cơ bản. Khi bạn học nhiều ngôn ngữ hơn, bạn sẽ được trang bị nhiều hơn để chọn công cụ phù hợp cho công việc đang làm, đây là dấu hiệu của một lập trình viên giỏi. Vì các khái niệm lập trình là điều quan trọng nhất, chúng tôi khuyên những người mới bắt đầu nên bắt đầu với một trong những ngôn ngữ chính từ bảng bên dưới. Tất cả các ngôn ngữ này cho phép người mới bắt đầu viết các ứng dụng đơn giản và thực hành lập trình mà không cần phải sử dụng bất kỳ tính năng ngôn ngữ phức tạp nào. Nếu bạn đã có dự án hoặc mục tiêu trong đầu, bạn sẽ học nhanh hơn nếu bạn có thể áp dụng các kỹ năng của mình vào vấn đề mà bạn đang cố gắng giải quyết. Bảng bên dưới chứa một số lựa chọn ngôn ngữ được đề xuất cho các dự án phổ biến tôi muốn học cách. Cân nhắc sử dụng. tạo ứng dụng iPhoneSwift (). tạo ứng dụng AndroidKotlin/Java (). xây dựng một trang web JavaScript, CSS, HTML5 (). viết các ứng dụng máy tính để bàn Windows C#. tạo trò chơi 2D/3DJavaScript, C# hoặc C++ (). chương trình Arduinos/vi điều khiển/robot. thực hiện tính toán khoa học/toán học hoặc phân tích dữ liệuJulia, Python, R hoặc Matlab. thực hiện tự động hóa và viết kịch bản Nhiều ngôn ngữ (Python, Ruby, Bash, Powershell, AutoHotKey. )Nếu bạn vẫn không thể quyết định, hãy thử Python. Python là một ngôn ngữ tốt, thân thiện với người mới bắt đầu với một cộng đồng lớn và nhiều thư viện để làm hầu hết mọi thứ bạn muốn, từ tạo trò chơi đến tự động hóa mọi thứ ở nhà hoặc nơi làm việc của bạn hoặc phân tích dữ liệu để tạo trang web. Cố gắng tìm một tài nguyên học tập tập trung vào các khái niệm và nguyên tắc cơ bản trước khi đi sâu vào các ứng dụng phức tạp hơn Tôi tìm tài nguyên học tập tốt ở đâu?Làm thế nào để cải thiệnMột câu hỏi phổ biến mà chúng tôi nhận được từ nhiều người mới bắt đầu là "bây giờ thì sao?". Cụ thể, bạn có thể đã thử làm việc qua một số hướng dẫn, sách, khóa học, nhưng cuối cùng gặp khó khăn trong việc tạo ra khoảng cách từ việc hiểu cách thức hoạt động của những thứ như câu lệnh if và vòng lặp for đến việc hiểu cách thực sự áp dụng những gì bạn đã học để tạo ra sự phức tạp và thú vị Thực hiện chuyển đổi này giữa các hướng dẫn giới thiệu sang mã phức tạp có thể khó khăn và là một phần bình thường của việc học viết mã. Bài viết này mô tả hiện tượng này rất tốt. Nhiều hướng dẫn (đặc biệt là các trang web "học viết mã" được thương mại hóa như CodeCademy) có xu hướng hướng dẫn bạn những điều cơ bản, nhưng dừng lại sau thời điểm đó, khiến nhiều người mới bắt đầu lúng túng Tuy nhiên, nếu bạn gắn bó với nó và vượt qua sự bối rối, cuối cùng bạn sẽ thấy mình ngày càng trở nên tốt hơn, cho đến một ngày, mà bạn không nhận ra điều đó, bạn sẽ thấy rằng mình đã bắt đầu trở nên có năng lực. Dưới đây là một số gợi ý về cách kiên trì và bạn nên làm gì tiếp theo
Để biết thêm quan điểm, đề xuất và lời khuyên về việc thực hiện bước nhảy vọt này, hãy xem các bài đăng sau Tôi có thể tìm các bài tập thực hành và ý tưởng dự án ở đâu?ý tưởng dự án Nếu bạn đang cố gắng thực hiện một dự án, đây là một số danh sách ý tưởng bạn có thể tham khảo để lấy cảm hứng
Bạn muốn làm điều gì đó đầy thách thức? . Ví dụ: hãy thử viết của riêng bạn
Bài tập thực hành Dưới đây là một số trang web/tài nguyên tốt để bắt đầu
Làm cách nào tôi có thể cải thiện kỹ năng chuyển đổi nhiệm vụ/bài toán thành chương trình (Tư duy thuật toán)?Đây là một trong những câu hỏi thường gặp nhất Câu trả lời chung là. Bằng cách viết nhiều chương trình Tuy nhiên, có một bài tập đơn giản có thể giúp bạn xây dựng kỹ năng đó. Có thể bạn quan tâm
Nghe có vẻ ngu ngốc, nó hoạt động. Những điều trên đã được thử trên nhiều sinh viên và được chứng minh là tạo ra sự cải thiện đáng kể Tôi không thể nghĩ ra bất kỳ ý tưởng mới hay ho nào cho một dự án. Có phải tôi chỉ đơn giản là thiếu sáng tạo?Để bắt đầu, đây là một trích dẫn hay từ Chuck Close on (not) để chờ nguồn cảm hứng
Bạn sẽ hiếm khi có ý tưởng nếu chỉ ngồi một chỗ và chờ đợi một tia cảm hứng. Thời gian của bạn sẽ được sử dụng hợp lý hơn nhiều nếu bạn cứ tiếp tục và thử xây dựng một thứ gì đó (bất cứ thứ gì. ), ngay cả khi ý tưởng có vẻ hơi ngu ngốc hoặc đã được thực hiện Xét cho cùng, đó là điều mà các nghệ sĩ và nhạc sĩ làm -- họ không nhất thiết phải bắt đầu bằng cách cố gắng tạo ra một bản vẽ có tính sáng tạo cao hoặc sáng tác nhạc của riêng mình. Thay vào đó, họ vẽ phong cảnh hoặc bình hoa hoặc cover các bài hát hiện có. Tương tự như vậy, đừng cảm thấy bị bắt buộc khi đưa ra ý tưởng dự án. Triển khai lại các chương trình hiện có là một truyền thống lâu đời -- hãy xem bạn có thể tiến xa đến đâu Nhưng trong mọi trường hợp, đây là một số ý tưởng và thủ thuật khác để đưa ra các dự án của riêng bạn
Tôi có thể tìm các ví dụ về mã và dự án tốt để nghiên cứu ở đâu?Trước khi bắt đầu, xin lưu ý rằng nghiên cứu mã hiện có không nhất thiết là cách tốt nhất để học lập trình. Cuối cùng, lập trình là về giải quyết vấn đề ứng dụng và cách tốt nhất để giải quyết vấn đề tốt hơn là thông qua thực hành nhiều. Chỉ đọc các đoạn mã hiện có không có khả năng dạy cho bạn nhiều. Thông thường, khi mọi người nghiên cứu mã, đó là cách có mục tiêu và cụ thể. Ví dụ: nếu một nhà phát triển quan tâm đến việc viết trò chơi bằng một số công cụ, sẽ rất hữu ích nếu bạn xem mã nguồn của các bản demo khác nhau sử dụng công cụ đó. Trong mọi trường hợp, hãy thử xem phần Trưng bày trên Github. Nó có một danh sách tuyển chọn gồm rất nhiều chương trình nguồn mở phổ biến và thú vị trải dài từ thư viện và trò chơi đến âm nhạc và phân tích dữ liệu/báo chí mở, đồng thời là một ví dụ điển hình về những thứ mọi người đang làm với mã. Mã nguồn cũng có thể xem công khai, vì vậy bạn có thể thử tải xuống và tự mày mò các dự án này Ngoài ra, hãy xem Kiến trúc của các chương trình nguồn mở, một loạt sách điện tử miễn phí chứa nhiều hướng dẫn có hướng dẫn hơn về cách cấu trúc các chương trình nguồn mở phổ biến. Cuốn sách mới nhất trong sê-ri, "500 dòng hoặc ít hơn" có thể là một điểm khởi đầu tốt vì các chương trình đủ nhỏ để bạn có thể tự mày mò chúng một cách khả thi và sử dụng chúng như một điểm xuất phát tốt để bắt đầu dự án của riêng bạn Làm cách nào để tôi học các chủ đề được đề cập trong một văn bằng khoa học máy tính điển hình?Nếu bạn quan tâm đến việc tự học tài liệu có trong hầu hết các chương trình khoa học máy tính tiêu chuẩn ở cấp đại học hoặc cao đẳng, các liên kết sau đây sẽ cung cấp một cái nhìn tổng quan tốt, cùng với các liên kết đến các nguồn học tập bổ sung Xin lưu ý rằng bằng khoa học máy tính chất lượng cao có xu hướng rất khắt khe và đòi hỏi khắt khe. Nếu bạn quan tâm đến việc theo đuổi con đường này, bạn có thể sẽ mất vài năm và rất nhiều nỗ lực để đạt được trình độ học vấn tương tự thông qua việc tự học Làm cách nào để bắt đầu và kết thúc một dự án lớn?Đầu tiên và quan trọng nhất. nhận thức đầy đủ, toàn diện về vấn đề Thông thường, Gỡ lỗi Vịt cao su sẽ giúp thực hiện bước này. Giải thích một vấn đề hoặc khái niệm cho ai đó (hoặc một cái gì đó) không có kiến thức hoặc hiểu biết giúp hiểu sâu hơn về vấn đề. Làm như vậy, người ta phải suy nghĩ nhiều hơn về vấn đề sẽ dẫn đến sự hiểu biết sâu sắc hơn. Thứ hai. Đừng đi thẳng vào máy tính Dành thời gian đáng kể để cân nhắc về vấn đề/nhiệm vụ. Tạo một số bản phác thảo, bản vẽ, một số mã giả, một số gợi ý bằng ngôn ngữ đơn giản, bất cứ thứ gì có thể hữu ích trên giấy (Tôi nhấn mạnh điều này ở đây vì các công cụ kỹ thuật số làm xao nhãng nhiệm vụ thực tế - chỉ sử dụng bút chì và giấy hoặc bảng trắng. ) Phân tích kỹ vấn đề Điều này dẫn chúng ta đến những điều sau đây Hãy nhớ một điều khi tự mình giải quyết các dự án lớn
Điều này có nghĩa là về cơ bản bất cứ máy móc lớn, nhà ở, tòa nhà chọc trời, ô tô, xe lửa, máy tính, v.v. bạn nhìn bao gồm nhiều cấu trúc nhỏ hơn, kết hợp lại, tạo ra sản phẩm cuối cùng. Các cấu trúc nhỏ hơn bao gồm các cấu trúc nhỏ hơn, v.v. Điều tương tự cũng áp dụng cho các chương trình lớn. Chúng bao gồm nhiều đơn vị nhỏ hơn được ghép nối với nhau để tạo thành toàn bộ. Lý tưởng nhất (nhưng thường là không thể) mỗi đơn vị nhỏ hơn nên hoạt động (và được kiểm tra) độc lập với các đơn vị khác Khởi đầu nhỏ. Nhìn vào vấn đề bạn đã chọn và cố gắng chia nó thành các phần nhỏ hơn. Rửa sạch và lặp lại cho đến khi bạn nghĩ rằng bạn không thể tách nó ra nữa Khi bạn đã đạt đến điểm đó, hãy bắt đầu lập trình. Xây dựng một phần nhỏ, kiểm tra nó. Xây dựng phần nhỏ tiếp theo, kiểm tra nó, v.v. Đừng nhìn vào bức tranh lớn, cuối cùng vì điều này sẽ làm bạn choáng ngợp. Giải quyết một phần riêng lẻ tại một thời điểm Vấn đề lớn nhất mà các lập trình viên thiếu kinh nghiệm gặp phải là phần lớn họ bị choáng ngợp khi nhìn vào một nhiệm vụ lớn. Nhưng vấn đề này không quá khó để khắc phục Đừng cố xem chương trình cuối cùng với tất cả chuông và còi. Tập trung vào một phần nhỏ, có thể quản lý được, hoàn thành nó và tiếp tục. Ngay cả chương trình/hệ thống phức tạp nhất cũng bao gồm các phần nhỏ, đơn giản Làm thế nào để tôi theo kịp với nó? Hãy tưởng tượng rằng bạn đang làm việc cho một khách hàng và khách hàng cần xem và phê duyệt thiết kế của bạn trước khi bạn bắt đầu viết mã vì họ có thể có nhận xét này hoặc nhận xét khác hoặc họ muốn đảm bảo rằng giao tiếp giữa họ và bạn đã hiệu quả và bạn hiểu ý kiến của họ.
Một số lời khuyên bổ sung
Những lo lắng và sợ hãi chungTôi có quá già để viết mã không?Không, bạn có thể học lập trình và có thể có một sự nghiệp làm việc đó ở mọi lứa tuổi Có một lầm tưởng phổ biến rằng cách duy nhất để giỏi lập trình là bắt đầu học viết mã từ khi còn nhỏ. Điều này là sai -- trong khi có một số người bắt đầu học viết mã sớm (và do đó có thể có một chút khởi đầu thuận lợi), hầu hết mọi người sẽ bắt đầu học viết mã khi họ vào đại học hoặc muộn hơn Học hỏi là điều bạn có thể làm ở mọi lứa tuổi -- thay vì tập trung vào người khác, hãy chỉ tập trung vào bản thân và tốc độ tiến bộ của cá nhân bạn. Hãy thử và trau dồi một "tư duy phát triển" thay vì một "tư duy cố định" Có điều gì tôi nên học trước không?Có rất ít điều kiện tiên quyết -- phần lớn, bạn có thể bắt đầu ngay việc học viết mã Điều kiện tiên quyết thực sự duy nhất là
Nó cũng hữu ích nếu bạn biết một số môn toán (đến cấp độ đại số cơ bản) và nếu bạn biết tiếng Anh (vì nhiều tài nguyên trực tuyến bằng tiếng Anh), nhưng cả hai đều không bắt buộc Tất cả những điều trên ít nhiều cũng đúng nếu bạn muốn lấy bằng chính quy tại một trường đại học. Hầu hết các trường đại học và cao đẳng mong muốn sinh viên mới vào không biết gì về khoa học máy tính và lập trình, và sẽ bắt đầu dạy bạn từ đầu (mặc dù trong một số trường hợp, bạn có thể bỏ qua một hoặc hai khóa học giới thiệu nếu bạn vượt qua bài kiểm tra hoặc thể hiện đủ kỹ năng trước đó). Nếu bạn đang học trung học hoặc sớm hơn và muốn học khoa học máy tính ở trường đại học, thì có thể tốt hơn nếu bạn bắt đầu học trước để có một khởi đầu thuận lợi, nhưng bạn không nên cảm thấy bắt buộc phải làm như vậy Một số trường đại học cũng có thể có các điều kiện tiên quyết nghiêm ngặt hơn về giáo dục phổ thông hoặc toán học (ví dụ: hầu hết các trường cao đẳng đều có môn giải tích là điều kiện tiên quyết), nhưng điều này sẽ khác nhau giữa các trường cao đẳng và là điều bạn nên trực tiếp điều tra và hỏi các trường cao đẳng và đại học mà bạn ' . Xem dưới đây để biết thêm chi tiết Tôi có cần phải giỏi toán không?Không nhất thiết - lập trình và khoa học máy tính là một lĩnh vực rộng và rộng, và việc bạn có cần giỏi toán hay không phụ thuộc vào việc bạn chọn chuyên ngành gì Ví dụ, một số lĩnh vực lập trình đòi hỏi kỹ năng toán học tốt. Các trò chơi 2D và 3D sẽ sử dụng thường xuyên các vectơ, ma trận và đại số tuyến tính; Nói chung, chủ đề càng nâng cao và phức tạp thì bạn càng cần phải có một nền tảng toán học vững chắc. Nếu mục tiêu của bạn là có thể giải quyết những loại vấn đề phức tạp đó, thì việc có một nền tảng tốt sẽ là vô giá Tuy nhiên, cũng giống như nhiều khía cạnh của khoa học máy tính và lập trình không yêu cầu hiểu biết tốt về toán học. Điều duy nhất bạn thực sự cần biết là cách cộng, trừ, nhân và chia, và có thể là một chút đại số cơ bản. Nhiều lập trình viên trải qua toàn bộ sự nghiệp của họ mà hầu như không phải làm bất kỳ phép toán nào Đặc biệt, nhiều vai trò đối mặt với sản phẩm (e. g. phát triển web, phát triển di động) yêu cầu kiến thức rất tối thiểu về toán học. Trong các phân ngành đó, điều quan trọng nhất là khả năng viết mã mạnh mẽ và có thể bảo trì của bạn, cũng như khả năng tìm ra cách xây dựng những thứ có giá trị cho người dùng của bạn Trong mọi trường hợp, nếu bạn không giỏi toán, bạn chắc chắn có thể học và cải thiện. Rốt cuộc, có lẽ bạn cũng chưa giỏi lập trình lắm, nhưng bạn đang ở đây, học cách viết mã. Hãy xem Khan Academy và bạn có thể tìm thấy các bài học miễn phí bắt đầu từ môn toán cơ bản trở lên. Ngoài ra, hãy xem /r/learnmath để biết thêm tài nguyên Tuy nhiên, xin lưu ý rằng câu trả lời sẽ hơi khác một chút nếu bạn quan tâm đến việc lấy bằng Khoa học Máy tính. Nhiều trường đại học hoặc cao đẳng sẽ có những điều kiện tiên quyết cụ thể mà bạn cần phải đáp ứng trước khi bạn có thể vào chuyên ngành hoặc tốt nghiệp (các lớp giải tích, v.v.). Và, vì Khoa học Máy tính, ở một mức độ nhất định, bạn gần như chắc chắn sẽ học về toán rời rạc, viết chứng minh và các chủ đề tương tự khác trong khi lấy bằng cấp của mình. Bạn không cần phải giỏi toán bẩm sinh để học những chủ đề này (hoặc thực sự là bất kỳ chủ đề toán học nào), nhưng việc có một chút thành thục về toán học chắc chắn sẽ không ảnh hưởng gì và có thể sẽ giúp quá trình học diễn ra suôn sẻ. Bằng cấp CS tập trung vào toán học sẽ khác nhau chính xác như thế nào giữa các trường. Một số trường nhấn mạnh vào lý thuyết bao quát, trong khi những trường khác không nhấn mạnh cả hai để tập trung vào ứng dụng. (Và một số trường nhấn mạnh cả hai). Nếu bạn muốn tìm hiểu thêm, bạn nên điều tra trực tiếp các yêu cầu và cấu trúc bằng cấp của bất kỳ trường cao đẳng hoặc đại học nào mà bạn muốn theo học. Chúng ta sẽ không thể dễ dàng dự đoán một số trường đại học nhất định sẽ đi theo hướng nào Tóm lại, bạn không nhất thiết phải giỏi toán nếu muốn có một sự nghiệp thành công với tư cách là một nhà phát triển. Nếu bạn muốn trở thành một nhà khoa học máy tính, bạn sẽ phải học một lượng kha khá toán học. Nếu bạn muốn giải các bài toán khó hơn/trong một số lĩnh vực nhất định, toán học có thể là một công cụ hữu ích, tùy thuộc vào tình huống Tôi Google rất nhiều hoặc không biết cách hoàn thành việc gì đó trước khi bắt đầu. Như vậy có được không?VÂNG. Đây là một chủ đề thảo luận về chủ đề từ nhiều góc độ khác nhau. Có nhiều hơn nữa giống như nó Lập trình có khó không?Lập trình giống như hầu hết các kỹ năng. nó tương đối dễ dàng để tìm hiểu những điều cơ bản và áp dụng chúng. Nếu bạn muốn học cách đánh bát - bạn sẽ tìm ra cách đặt ngón tay của mình vào các lỗ và đẩy nó theo hướng chung của các chốt. Bạn thậm chí có thể xô đổ một số người và không thấy việc đó đặc biệt khó khăn. Lập trình cũng giống như hầu hết các kỹ năng ở chỗ nó liên quan nhiều hơn đến việc chuyển từ người mới bắt đầu thành người có trình độ kỹ năng nhất định. Để tiếp tục tương tự bowling. nếu bạn muốn trở thành một vận động viên ném bóng thi đấu, bạn sẽ phải dành nhiều năm để thành thạo kỹ năng này. Điều này cũng đúng với mã hóa. bạn sẽ cần dành thời gian (tức là rất nhiều) để cố gắng tìm ra lý do tại sao chương trình ngu ngốc này không hoạt động ngay cả khi bạn đã kiểm tra nó ba lần. Bạn sẽ cần phải đọc sách, ngồi học và nói chuyện với mọi người về nó. Bạn sẽ học biệt ngữ. Bạn cũng sẽ chuyên sâu - tìm hiểu sâu hơn về một vài lĩnh vực nhỏ. Tất cả điều này vẫn sử dụng những điều cơ bản của lập trình, nhưng theo những cách mới và sự kết hợp mới. Tìm giải pháp cho các vấn đề của bạn sẽ khó khăn. Tập trung hàng giờ vào cùng một vấn đề sẽ rất khó. Điều đó không sao cả, bởi vì nếu bạn thích nó và bạn có động lực - những phần khó khăn sẽ không khó khăn bằng và bạn có thể vượt qua chúng Tóm lại, lập trình có thể khó. Giống như với hầu hết mọi thứ, nó cần nỗ lực và nỗ lực đó có thể khó khăn. Đừng nản lòng - nếu bạn thích nó, phần khó khăn sẽ có phần thưởng xứng đáng Người mới bắt đầu gặp một số rắc rối về các vấn đề và bài tập có phải là điều bình thường không?Người mới bắt đầu bị ngã xe đạp một vài lần có phải là điều bình thường không? Hoàn toàn đồng ý Thất bại và đấu tranh là một phần rất quan trọng và tự nhiên của quá trình học tập. Thất bại dạy bạn cách không làm mọi việc và cho bạn phản hồi có giá trị về mức độ bạn hiểu điều gì đó. Thất bại chỉ là một từ khác để chỉ kinh nghiệm thu được Thất bại và chật vật là điều mà mọi người mới bắt đầu đều trải qua. bạn phải đấu tranh. Vì vậy, thay vì cảm thấy nản lòng, bạn nên nắm lấy điều này. đấu tranh là một dấu hiệu cho thấy bạn đang thử thách chính mình. Sử dụng nó như một hướng dẫn để giúp bạn tìm ra tài liệu nào bạn cần xem lại và học tiếp theo, hoặc những câu hỏi bạn nên đặt ra Ngay cả các chuyên gia cũng thất bại và gặp khó khăn khi họ cần học tài liệu mới (mặc dù họ có xu hướng phục hồi/sử dụng thất bại tốt hơn như một cách để giúp họ tăng tốc việc học) Trên thực tế, nếu bạn không gặp khó khăn, đó là dấu hiệu cho thấy bạn gần như chắc chắn đang làm sai điều gì đó. Nếu mọi thứ đều dễ dàng, điều đó có nghĩa là
Nó tương tự như tập thể dục. Nếu bạn không cảm thấy mệt mỏi về thể chất sau khi tập luyện, bạn có thực sự đạt được nhiều điều từ bài tập đó không? Câu hỏi về học tập"Biết một ngôn ngữ" hay "biết lập trình" có nghĩa là gì?"Biết một ngôn ngữ" để lập trình cũng giống như biết một ngôn ngữ để nói. Bạn có thể nói rằng bạn biết nó khi bạn có thể sử dụng nó một cách hiệu quả, ngay cả khi bạn không biết "mọi thứ" về nó. Để "biết cách lập trình" thường có nghĩa là bạn hiểu các khái niệm liên quan đến lập trình và bạn có thể sử dụng chúng hiệu quả bằng một hoặc nhiều ngôn ngữ. Đọc một số chủ đề trước đây về chủ đề này Tôi mới bắt đầu học ngôn ngữ X. Tôi có nên bắt đầu học ngôn ngữ Y?Đặc biệt khi bạn mới bắt đầu học lập trình, tốt nhất nên học một ngôn ngữ và gắn bó với nó một thời gian. Ngay cả khi một miền vấn đề cụ thể sử dụng một ngôn ngữ cụ thể mà bạn chưa biết, trước tiên hãy học cách lập trình. Khi bạn hiểu các nguyên tắc cơ bản (điều khiển luồng, xử lý lỗi, I/O, triển khai thuật toán, cấu trúc dữ liệu, v.v. ), thì bạn có thể bắt đầu lo lắng về việc chọn các ngôn ngữ khác nhau Tôi có nên học nhiều hơn một ngôn ngữ lập trình cùng một lúc không?Trừ khi bạn có lý do chính đáng, hầu hết những người mới bắt đầu chỉ nên gắn bó với một ngôn ngữ trong ít nhất vài tháng. Đây là một cách học hiệu quả hơn vì nhiều lý do
Có một số ngoại lệ đối với hướng dẫn này. Bạn có thể học ngôn ngữ thứ hai cùng với ngôn ngữ thứ nhất nếu
Nếu bạn không coi mình là người mới bắt đầu và cảm thấy thoải mái khi sử dụng ngôn ngữ lập trình của mình để hoàn thành các dự án phức tạp vừa phải, thì tất nhiên bạn nên thử học nhiều ngôn ngữ cùng một lúc. Tại thời điểm này, bạn nên có đủ hiểu biết về lập trình để bắt đầu tiếp thu ngôn ngữ mới với tốc độ nhanh và nên biết rõ bạn có khả năng học bao nhiêu cùng một lúc. Làm cách nào tôi có thể có/duy trì động lực để học lập trình?Kiểm tra /r/GetMotivated/ và /r/GetDisciplined Chúng ta thường nghĩ "nếu tôi có đủ động lực. sau đó tôi có thể. ", tuy nhiên; đó là hành động thúc đẩy động lực. Đầu tiên là hành động, sau đó là động lực. Tìm các chương trình nhỏ, cụ thể để tạo. Loại bỏ những phiền nhiễu. Nhận plugin trình duyệt để chặn các trang web như Reddit, Facebook và Twitter. Hãy dành một phút để hình dung bạn sẽ cảm thấy tuyệt vời như thế nào khi trở thành một lập trình viên hiểu biết hơn Dưới đây là một số chủ đề trước đây về chủ đề này Làm thế nào để tôi bắt đầu trong X?Làm cách nào tôi có thể bắt đầu tạo trò chơi điện tử?Trò chơi điện tử hiện đại được thực hiện bằng cách sử dụng công cụ trò chơi. thư viện phần mềm xử lý các tác vụ phức tạp như đồ họa, âm thanh, vật lý và kết nối mạng. Có nhiều tùy chọn có sẵn - Tuy nhiên, các công cụ sau đây được khuyến khích mạnh mẽ cho người mới bắt đầu vì chúng được phát triển miễn phí và có tài liệu tốt nhất để học
Luôn nhớ rằng mục tiêu của bạn là phát triển game chứ không phải engine Công cụ sẽ giúp bạn bắt đầu với đồ họa và điều khiển người dùng cho trò chơi của mình, nhưng bạn vẫn cần học kỹ ngôn ngữ lập trình để viết logic trò chơi của mình - vì vậy hãy chọn một cuốn Sách hay hoặc Tài nguyên trực tuyến Quan trọng nhất. bắt đầu đơn giản. Bạn sẽ muốn tham gia ngay và tạo ra trò chơi mơ ước của mình ngay lập tức, nhưng hãy nhớ rằng cách duy nhất để leo lên một ngọn núi là thực hiện nhiều bước nhỏ. Dưới đây là danh sách các trò chơi luyện tập đơn giản được liệt kê theo thứ tự độ khó tăng dần - hãy cân nhắc thử một vài trong số này trước khi chuyển ngay đến mục tiêu cuối cùng của bạn Đảm bảo xem Câu hỏi thường gặp về /r/gamedev, đọc hướng dẫn "Cách bắt đầu" /r/gamedev và thực hiện một số tìm kiếm cho các chủ đề trước đây trên /r/gamedev và /r/learnprogramming Làm cách nào để tôi bắt đầu tạo trang web/tạo ứng dụng web/phát triển web?Có nhiều cách khác nhau để tìm hiểu về phát triển web, nhưng nói chung, các kỹ năng cốt lõi mà bạn cần thường được chia thành kỹ năng giao diện người dùng (mã chạy trên trình duyệt web của người dùng) và kỹ năng phụ trợ (mã chạy trên máy chủ của bạn) Nói chung, hầu hết mọi người sẽ khuyên bạn nên bắt đầu bằng cách học HTML, CSS và Javascript (theo thứ tự đó), đây là ba ngôn ngữ cốt lõi chạy trên mọi trình duyệt web và tạo nên mọi trang web. Bạn có thể tìm thêm thông tin trên /r/webdev FAQ. Đây là một cái khác cho người mới bắt đầu Làm cách nào để bắt đầu tạo ứng dụng dành cho thiết bị di động/ứng dụng Android/ứng dụng iOS/ứng dụng Windows phone?Bạn sẽ cần học một ngôn ngữ lập trình khác nhau cho từng loại điện thoại thông minh
Bạn cũng có thể tạo các ứng dụng có thể chạy trên cả ba điện thoại thông minh chính bằng cách sử dụng các công nghệ như Phonegap và Titanium -- chúng cho phép bạn viết ứng dụng của mình một lần bằng HTML, CSS và Javascript và chạy ứng dụng của bạn trên mọi nền tảng Xem để biết thêm thông tin. Đây là một chủ đề quá khứ về chủ đề này. http. //đỏ. nó/352f09 Tuy nhiên, hãy nhớ rằng nhiều, nếu không phải tất cả, các nguồn trên đều hướng đến những người đã có một số kinh nghiệm lập trình trước đó. Nếu bạn chưa bao giờ lập trình trước đây, bạn có thể muốn bắt đầu học một ngôn ngữ có nhiều tài nguyên hơn dành cho người mới bắt đầu. Khi bạn đã có một số kinh nghiệm và tìm hiểu về các khái niệm cơ bản đằng sau lập trình, bạn sẽ thường thấy rằng việc học một ngôn ngữ mới và bắt đầu tìm hiểu về phát triển di động sẽ dễ dàng hơn nhiều. Phần trong Câu hỏi thường gặp của chúng tôi có thêm một số thông tin về nơi bắt đầu Làm thế nào để tôi tự động hóa mọi thứ?Đối với Windows, có một số ngôn ngữ lập trình chuyên dụng, chẳng hạn như Autohotkey và AutoIt Một giải pháp thay thế đa nền tảng khả thi khác là Python. Tự động hóa những thứ nhàm chán với Python là một tài nguyên học tập tuyệt vời Nếu bạn muốn tự động hóa MS-Office, hãy sử dụng ngôn ngữ lập trình tích hợp sẵn Visual Basic for Applications (VBA). /r/vba dành riêng cho lập trình VBA tốt nhất là gì/u/thekodols đã tổng hợp danh sách hơn 150 câu hỏi và câu trả lời "điều gì là tốt nhất" trong bài đăng này bao gồm nhiều ngôn ngữ, công cụ và chủ đề khác nhau Thuật ngữ và từ vựngSự khác biệt giữa khoa học máy tính, kỹ thuật máy tính, công nghệ phần mềm, lập trình và viết mã là gì?CS/CE/SE so với Lập trình/Viết mã Khoa học máy tính (CS), kỹ thuật máy tính (CE), công nghệ phần mềm (SE), lập trình và mã hóa là tất cả các thuật ngữ có liên quan với nhau nhưng khác biệt một cách tinh tế với nhau, thường khiến người mới bắt đầu khó phân biệt chúng Sự khác biệt đầu tiên bạn nên thực hiện là phân biệt giữa CS/CE/SE và lập trình/viết mã. CS, CE và SE là tất cả các lĩnh vực nghiên cứu. Nói "Tôi đang học khoa học máy tính" sẽ tương tự như nói "Tôi đang học hóa học" hoặc "Tôi đang học văn". Ngược lại, lập trình và viết mã là những hoạt động -- chúng là những việc bạn làm. Nói một cách ẩn dụ, học CS/CE/SE sẽ giống như học lý thuyết âm nhạc, trong khi học lập trình/viết mã giống như học cách chơi một nhạc cụ cụ thể Về mặt lý thuyết, bạn có thể học cái này và không học cái kia, nhưng kinh nghiệm của bạn sẽ phong phú hơn nhiều nếu bạn học cả hai. Một điểm khác biệt nữa là trong khi CS/CE/SE là những thứ bạn có thể học, thì học lập trình là thứ chỉ có được thông qua thực hành. Và trên thực tế, điều mà hầu hết các trường đại học và phổ thông sẽ làm là chính thức dạy một ngôn ngữ để dạy những điều cơ bản về viết mã, sau đó sẽ tập trung vào dạy CS, CE và SE và để bạn học cách lập trình thông qua thực hành và hoàn thành bài tập về nhà. CS so với CE so với SE Sự khác biệt tiếp theo bạn nên thực hiện là giữa CS, CE và SE. Tóm lại, mặc dù có nhiều điểm trùng lặp, nhưng "khoa học máy tính" ít liên quan đến máy tính hay khoa học mà là một lĩnh vực toán học ứng dụng nghiên cứu khái niệm về khả năng tính toán. Kỹ thuật máy tính tương tự như CS, nhưng có xu hướng tập trung nhiều hơn vào phần cứng cấp thấp hơn -- nó giống như sự giao thoa giữa khoa học máy tính và kỹ thuật điện. Và cuối cùng, công nghệ phần mềm thiên về cách xây dựng các chương trình lớn và phức tạp đồng thời ngăn không cho chúng sụp đổ dưới sức nặng của chính chúng -- nó giống như CS và CE, nhưng ít lý thuyết hơn Bạn có thể tìm thấy một cái nhìn tổng quan chi tiết hơn ở đây. http. //www. reddit. com/r/learnprogramming/comments/2k569h/eli5_computer_science_vs_software_engineering_vs/ Lập trình vs Mã hóa Và cuối cùng, bạn có lập trình vs mã hóa. Sự khác biệt giữa hai thuật ngữ này rất nhỏ -- nhiều người sử dụng chúng thay thế cho nhau. Nói chung, thuật ngữ "lập trình" dường như có ý nghĩa tích cực hơn một chút so với "viết mã". Nếu bạn nói "Tôi là một lập trình viên", điều đó ngụ ý một mức độ chuyên nghiệp nhất định -- điều đó cho thấy rằng bạn không chỉ có thể viết mã mà còn nắm vững các nguyên tắc và lý thuyết cơ bản, biết cách giao tiếp với khách hàng và làm việc Ngược lại, nếu bạn nói "Tôi là một lập trình viên", điều đó thường ngụ ý rằng bạn tập trung hoàn toàn vào việc viết mã và ít tập trung vào những thứ khác Tuy nhiên, một lần nữa, các ý nghĩa khác nhau ở đây rất nhỏ -- bạn có thể sử dụng hai thuật ngữ thay thế cho nhau trong phần lớn các trường hợp Sự khác biệt giữa C, C++, Objective-C và C# là gì?TL; DR - C, C++, Objective-C và C# không phải là các hương vị khác nhau của cùng một ngôn ngữ C là ngôn ngữ nhỏ nhất và lâu đời nhất trong số các ngôn ngữ này. Ban đầu nó được tạo ra làm ngôn ngữ lập trình hệ thống cho hệ điều hành Unix và ngày nay vẫn được sử dụng rộng rãi để lập trình ứng dụng C++ là một ngôn ngữ lập trình đa năng, rất phổ biến, ban đầu dựa trên C. Với một số điều chỉnh, hầu hết mã C có thể được biên dịch thành mã C++. Tuy nhiên, C ++ bổ sung một tập hợp lớn các tính năng ngôn ngữ làm thay đổi đáng kể cách sử dụng ngôn ngữ so với cách sử dụng C. Nó thường được coi là một thực tế xấu để viết mã kiểu C trong C ++ Mục tiêu-C là tập hợp thay thế nghiêm ngặt của C, có nghĩa là tất cả mã C hợp lệ cũng là mã Mục tiêu-C hợp lệ. Objective-C gần như không phổ biến như C hoặc C++ và ngày nay chủ yếu được sử dụng để phát triển cho nền tảng OS X và iOS của Apple C# không dựa trên C theo bất kỳ ý nghĩa kỹ thuật nào. C# là ngôn ngữ có mục đích chung được thiết kế bởi Microsoft và có nhiều điểm tương tự như Java. Nó biên dịch thành một dạng trung gian chạy trong máy ảo (CLR), không giống như ba ngôn ngữ trước đó, tất cả đều được biên dịch thành mã máy gốc. Trong khi C# mượn các yếu tố cú pháp từ C và C++ (cũng như Java), nó không có mối quan hệ kỹ thuật thực sự nào với các ngôn ngữ đó Sự khác biệt giữa Java và JavaScript là gì?Java có liên quan đến JavaScript giống như cách quả nho có liên quan đến quả bưởi Tương tự như câu hỏi trước, Java và JavaScript không liên quan đến bất kỳ ý nghĩa kỹ thuật nào. Họ chia sẻ một chút cú pháp vì cả hai đều bị ảnh hưởng bởi C, nhưng đó là về nó. Wikipedia có một lời giải thích tốt về lý do tại sao sự giống nhau về tên tồn tại. Lớp so với Giao diệnĐây là một câu hỏi xuất hiện thường xuyên và thường gây nhầm lẫn cho những người mới bắt đầu vì nhìn bên ngoài cả hai dường như làm những việc tương tự nhau /u/donsagiv đã viết một ELI5 tuyệt vời và đơn giản (liên kết tới nhận xét ban đầu) Một hướng đạo sinh có huy hiệu xứng đáng để họ làm những việc nhất định, chẳng hạn như nấu ăn, bơi lội, đốt lửa trại, chèo thuyền, v.v. Đội trinh sát nam không quan tâm làm thế nào họ có thể làm những việc này (tôi. e. bơi kiểu bơi ếch, bơi ngửa, v.v. ) miễn là chúng đáp ứng đặc điểm kỹ thuật của nó (có thể di chuyển trong nước bằng một chuyển động nhất định, có kiểm soát của cơ thể trong khi vẫn nổi). Mỗi nam hướng đạo sinh có thể có 0 hoặc nhiều huy hiệu, nghĩa là họ được chứng nhận để làm từng việc mà huy hiệu xứng đáng Mặc dù vậy, họ vẫn là hướng đạo sinh. Mỗi hướng đạo sinh được phép tham dự các cuộc họp định kỳ của họ, mặc đồng phục của họ, v.v. Hướng đạo sinh không cần huy hiệu để bơi. Tuy nhiên, họ không thể đi bè trên sông trừ khi họ có huy hiệu bơi. Chỉnh sửa. huy hiệu bơi không thể tự bơi. Nó chỉ đơn thuần là một dấu hiệu cho thấy cậu bé trinh sát được gắn vào nó có thể bơi Hướng đạo sinh là lớp học và huy hiệu bơi lội là một giao diện mà nó thực hiện Mọi đối tượng của lớp được khởi tạo đều có các chức năng giống nhau (i. e. tham dự các cuộc họp định kỳ, đồng phục, v.v.). Nếu lớp thực hiện một giao diện, thì lớp PHẢI có khả năng thực hiện các chức năng được chỉ định trong giao diện (i. e bơi lội, chèo thuyền). Một số lớp không thể được sử dụng trong một số phần mã của bạn trừ khi chúng triển khai giao diện đó (tôi. e. đi bè trên sông cần có phù hiệu bơi). Chỉnh sửa. Một giao diện là một sự trừu tượng, vì vậy nó không thể được khởi tạo. (Bản thân huy hiệu không biết bơi. ) Tóm lại, một giao diện là một hợp đồng mà một lớp phải tuân theo để lớp triển khai nó Các giao diện và các lớp hoạt động khác nhau trong các ngôn ngữ khác nhau (Ví dụ của tôi là từ những gì tôi biết trong C# với khái quát). Tôi đề nghị bạn đọc tài liệu cho ngôn ngữ của bạn một cách cẩn thận Các giao diện cũng có thể được sử dụng để thu thập các đối tượng từ các lớp khác nhau (chúng hoạt động như một kiểu dữ liệu) Bạn có thể thu thập tất cả các hướng đạo sinh biết bơi, bất kể quốc tịch, giới tính, tuổi tác, v.v. và đi bè trên sông. Bạn không cần biết bất cứ điều gì về từng nam hướng đạo sinh, nhưng bạn biết rằng mỗi người trong số họ đều có thể bơi Kiểm soát Nguồn/Phiên bản/Sửa đổi là gì?Hệ thống kiểm soát phiên bản (VCS) là một công cụ theo dõi các thay đổi đối với mã của bạn và cho phép bạn thực hiện những việc hữu ích như hoàn tác lỗi mã hóa và xem điều gì đã thay đổi trong mã theo thời gian. Hệ thống kiểm soát phiên bản phân tán hiện đại (DVCS) cũng cho phép bạn làm việc dễ dàng với các lập trình viên khác trên cùng một mã. Và vâng, bạn chắc chắn nên sử dụng hệ thống kiểm soát phiên bản Hai DVCS phổ biến nhất là git và Mercurial; Vậy làm thế nào để tôi bắt đầu với kiểm soát sửa đổi?Bạn có thể bắt đầu với git bằng cách đọc sách hướng dẫn về git, được viết bởi một redditor, và cả sách git miễn phí Một hướng dẫn ngắn gọn, hay về Mercurial có tại đây Chúng tôi có liên kết đến các trang web tải xuống cho cả hai phần mềm trên IDE là gì?IDE là Môi trường phát triển tích hợp, là một ứng dụng GUI thường bao gồm trình soạn thảo văn bản với tính năng hoàn thành mã và đánh dấu cú pháp, một số tính năng quản lý dự án, trình biên dịch hoặc trình thông dịch (có thể định cấu hình hoặc bao gồm) và nhiều tính năng ưa thích khác để viết . Giải pháp thay thế cho việc sử dụng IDE là tự động làm những gì IDE đang làm cho bạn. Phương pháp này yêu cầu lập trình viên sử dụng các công cụ riêng biệt và có kiến thức chuyên sâu hơn về quy trình phát triển Đối với người mới bắt đầu, có các đối số cho cả hai phương pháp phát triển này
Việc sử dụng IDE so với các công cụ riêng biệt thường tùy thuộc vào sở thích cá nhân (tất nhiên trừ khi chủ lao động/trường học của bạn yêu cầu sử dụng một môi trường phát triển cụ thể). Nếu bạn chưa từng sử dụng IDE trước đây, hãy tải xuống một trong những IDE phổ biến và tìm hiểu về nó. Và nếu bạn chưa bao giờ sử dụng vim hoặc mã biên dịch từ dòng lệnh, hãy dùng thử và xem bạn có thích nó không. Có thể tìm thấy danh sách các IDE phổ biến và trình soạn thảo văn bản nhẹ trong Công cụ lập trình Máy tính và Hệ điều hànhTôi nên sử dụng loại hệ điều hành nào?Một câu hỏi phổ biến mà nhiều người mới bắt đầu đặt ra là họ nên sử dụng loại hệ điều hành nào -- Windows, Mac hoặc Linux Thành thật mà nói, điều đó không thành vấn đề -- trong thời đại ngày nay, chất lượng và mức độ trưởng thành của các công cụ có sẵn cho bạn sẽ giống nhau trên tất cả các nền tảng và bất kỳ ngôn ngữ lập trình phù hợp nào cũng sẽ có thể sử dụng được trên tất cả các hệ điều hành Điều đó có nghĩa là, cuối cùng bạn sẽ đạt được một số mức độ quen thuộc với cả ba hệ điều hành để bạn không bị lạc hoàn toàn khi gặp một loại HĐH mới (ví dụ: khi truy cập từ xa vào một máy khác hoặc khi bạn đến một hệ điều hành mới). Có hai ngoại lệ chính cho quy tắc này
Có một số tùy chọn tốt để chạy mã C# trên các nền tảng khác, nhưng một số Microsoft và. NET vẫn chủ yếu hướng tới Windows Mặc dù bạn có thể phát triển ứng dụng Mac và iOS trên bất kỳ máy tính nào, nhưng bạn phải sử dụng Xcode trên máy Mac để biên dịch và gửi ứng dụng của mình tới cửa hàng ứng dụng Cuối cùng, cũng cần lưu ý rằng bạn không bị "khóa" sau khi đã chọn một hệ điều hành -- bạn luôn có thể chạy một máy ảo (VM) với một hệ điều hành khác được cài đặt. Ví dụ: nếu tôi sở hữu một máy tính Windows, sẽ rất dễ dàng thiết lập một máy ảo Linux mà tôi có thể sử dụng mà không sợ nó can thiệp vào hệ điều hành Windows hiện có của tôi Tôi nên mua loại máy tính/máy tính xách tay nào?Một lần nữa, điều đó không thực sự quan trọng -- bất kỳ máy tính xách tay hoặc máy tính tầm trung nào cũng nên làm. Nếu bạn đã sở hữu một máy tính hoặc máy tính xách tay, bạn chỉ nên sử dụng nó thay vì mua một máy tính mới. Về cơ bản, bạn có thể học cách lập trình và có thể viết các chương trình phức tạp và thú vị trên hầu hết mọi máy tính hiện có Về cơ bản, nếu bạn túng thiếu và không có bất kỳ máy tính nào có thể sử dụng được, bạn luôn có thể kiểm tra các địa điểm như Craigslist để tìm máy tính đã qua sử dụng hoặc hỏi xung quanh. Bạn có thể tiến rất xa với một chiếc máy tính cũ nếu nó chỉ dành cho việc học Tuy nhiên, nếu bạn có nhu cầu mua máy tính mới và muốn dùng để lập trình thì nên ưu tiên CPU, RAM và dung lượng ổ cứng. Nếu có thể, hãy thử và mua một máy tính có thông số kỹ thuật sau hoặc tốt hơn
Nếu bạn có thể nâng cấp, có thể an toàn khi ưu tiên nhận CPU tốt hơn và nhiều RAM hơn là mua ổ cứng lớn hơn -- CPU mạnh hơn sẽ luôn hữu ích. Ngược lại, hầu hết các loại lập trình không yêu cầu bạn phải có nhiều dung lượng đĩa. các trường hợp ngoại lệ duy nhất là nếu bạn đang cố làm điều gì đó với hình ảnh hoặc video hoặc nếu bạn muốn tải xuống và phân tích các tập dữ liệu lớn trong khi tìm hiểu về máy học và những thứ tương tự (và bạn thường có thể lưu trữ những thứ đó trên đám mây, nếu Nếu bạn muốn mua một máy tính để bàn, những thông số kỹ thuật này thực sự là những thông số phù hợp duy nhất. Nếu bạn muốn tính di động, bạn nên mua một chiếc máy tính xách tay và đảm bảo rằng nó có màn hình và bàn phím đủ lớn để có thể thoải mái lập trình. Tuy nhiên, có một sự cân bằng tốt giữa khả năng sử dụng và tính di động trong máy tính xách tay
Bạn cũng nên tự hỏi mình dự định sử dụng máy tính xách tay của mình như thế nào. Bạn có định đặt nó trên bàn làm việc cả ngày hay mang nó đi khắp khuôn viên trường hay đi bộ đường dài ở Yukon với nó không? Nếu có thể, hãy thử trực tiếp kiểm tra máy tính xách tay mà bạn đang xem xét. Ví dụ, nếu bạn cảm thấy khó chịu khi gõ trên bàn phím của một máy tính xách tay cụ thể và không phải là thứ bạn có thể quen, thì bạn có thể muốn cho máy tính xách tay đó vượt qua bất kể nó trông đẹp như thế nào trên giấy. Nếu bạn cũng đang cố gắng mua một chiếc máy tính xách tay để chuẩn bị cho các lớp học ở trường đại học hoặc cao đẳng, bạn có thể thử kiểm tra trang web của họ/trang web của khoa khoa học máy tính hoặc kỹ thuật phần mềm của họ để xem họ có đề xuất và khuyến nghị cụ thể nào không Để biết thêm thông tin và để được trợ giúp chi tiết hơn, hãy truy cập các subreddits sau để nhận được các đề xuất được cá nhân hóa hơn Bạn cũng có thể muốn thận trọng khi mua Chromebook -- chúng sẽ yêu cầu một số mức độ tùy chỉnh hoặc sẽ yêu cầu bạn làm việc bằng trình chỉnh sửa và IDE trực tuyến cũng như yêu cầu truy cập internet liên tục. Để biết thêm thông tin, hãy xem các liên kết sau Bạn thậm chí nên thận trọng hơn khi cố gắng sử dụng máy tính bảng hoặc điện thoại làm thiết bị lập trình chính của mình. Mặc dù có thể lập trình bằng máy tính bảng hoặc điện thoại với một số nỗ lực, nhưng gần như tất cả quá trình phát triển phần mềm được thực hiện bằng máy tính để bàn hoặc máy tính xách tay bằng bàn phím Nếu bạn cần lời khuyên về việc chọn một nhãn hiệu cụ thể, hãy nhớ rằng lập trình không yêu cầu bất kỳ điều gì đặc biệt từ máy tính của bạn. Điều này có nghĩa là một máy tính đa năng tốt, rất có thể sẽ là một máy tính lập trình tốt. (Điều này làm cho việc tìm kiếm một chiếc máy tính xách tay tốt trở nên dễ dàng hơn, vì bạn không cần phải cố gắng tìm kiếm một chiếc được bán riêng cho các lập trình viên. ) Một ràng buộc tùy chọn cuối cùng. Nếu bạn đặc biệt quan tâm đến việc học máy, xử lý ngôn ngữ tự nhiên hoặc đồ họa (bao gồm cả phát triển trò chơi), bạn có thể cân nhắc mua máy có GPU. Mặc dù bạn không cần GPU để thực hiện bất kỳ việc nào trong số này, nhưng bạn thường có thể tăng tốc mã của mình bằng cách viết mã cẩn thận để mã tận dụng lợi thế của GPU (nếu có thể) Nếu bạn quan tâm nhiều hơn đến máy học hoặc NLP, xin lưu ý rằng bạn có thể thuê máy có GPU trên đám mây thông qua các dịch vụ như Amazon Web Services (AWS) hoặc Google Compute Engine (GCE) với giá tương đối rẻ Không có laptop/điện thoại có học Lập trình được không?Câu trả lời chung là có với điều kiện là bạn có một số thiết bị có thể chạy trình duyệt web Có rất nhiều IDE và khóa học trực tuyến Một vài ví dụ khóa họcIDENghề nghiệp và công việcTôi có thể kiếm được nhiều tiền từ lập trình không?Có thể, nhưng chỉ khi bạn giỏi về nó. Nhưng bạn cũng có thể kiếm được nhiều tiền khi làm thợ sửa ống nước hoặc trong bất kỳ lĩnh vực kinh doanh nào khác. Bạn cũng có thể thất bại khủng khiếp. Lập trình không phải là một công việc đảm bảo, an toàn Tôi có thể kiếm một công việc lập trình mà không cần bằng Khoa học Máy tính không?vâng và vâng Có thể kiếm được một công việc mà không cần bằng CS và không cần bằng cấp nói chung, mặc dù xác suất giảm. Bỏ học chắc chắn là không nên. Nếu lập trình không dành cho bạn, hãy chuyển chuyên ngành. Nếu nó dành cho bạn, ở lại trường sẽ cho bạn cơ hội tốt nhất để có việc làm sau khi bạn học xong Bạn có thể nhận được nhiều câu trả lời đầy đủ thông tin hơn cho những câu hỏi này và các câu hỏi định hướng nghề nghiệp khác nếu bạn đăng chúng trong /r/cscareerquestions hoặc /r/cscareerquestionsEU Làm thế nào để tôi thâm nhập vào ngành và có được một công việc mới bắt đầu?Một lần nữa, câu hỏi này hầu như nằm ngoài phạm vi của subreddit này -- các câu hỏi liên quan đến nghề nghiệp tốt hơn nên hỏi trên /r/cscareerquestions và bằng cách tham khảo wiki toàn diện của họ. Ngoài ra, hãy xem /r/cscareerquestionsEU nếu bạn đang sống ở EU Nhưng nói chung, có hai giai đoạn chính để nhận được một công việc mới bắt đầu, giả sử bạn đã biết cách viết mã
Hai giai đoạn đòi hỏi các chiến lược hơi khác nhau Giai đoạn 1. Xây dựng một sơ yếu lý lịch nổi bật Trong giai đoạn 1, mục tiêu của bạn là dần dần bắt đầu thêm các mục vào sơ yếu lý lịch giúp bạn nổi bật (hoặc ít nhất giúp bạn so sánh với) bất kỳ ứng viên nào khác đang nộp đơn. Một chiến lược đặc biệt hữu ích để làm điều này là bắt đầu xây dựng một danh mục các dự án không tầm thường mà bạn có thể giới thiệu với các nhà tuyển dụng tiềm năng. Danh mục đầu tư của bạn có thể chứa bất cứ thứ gì khác nhau, từ
Có một danh mục đầu tư tốt cho thấy nhà tuyển dụng có thể áp dụng thành công các ngôn ngữ lập trình, thư viện và công nghệ để giải quyết vấn đề và cung cấp cho họ cách đánh giá chính xác hơn trình độ kỹ năng của bạn. (Và, hóa ra, làm việc trong các dự án không tầm thường cũng là một trong những cách tốt hơn để cải thiện trình độ kỹ năng của bạn nói chung. ) Nói cách khác, bạn muốn chứng minh rằng bạn có thành tích xây dựng thành công những thứ tương đối phức tạp. Nếu bạn không có bất kỳ lịch sử công việc nào trước đây trong lĩnh vực này, làm việc trong các dự án là một trong những cách tốt hơn để làm điều đó Một số lưu ý bổ sung
Giai đoạn 2. Vượt qua cuộc phỏng vấn Chính xác những gì xảy ra trong giai đoạn 2 (vượt qua cuộc phỏng vấn) có thể khác nhau giữa các vùng. Ví dụ: nhiều công ty kiểu thung lũng silicon thích đặt câu hỏi về cấu trúc dữ liệu và thuật toán, vì vậy nếu bạn dự định nộp đơn vào những loại công ty có nền tảng vững chắc về chủ đề đó thì điều bắt buộc là phải làm. Điều này có thể không nhất thiết đúng ở những nơi khác trên thế giới hoặc đối với các loại công ty khác Một số nguyên mẫu phỏng vấn phổ biến mà bạn có thể gặp bao gồm
Ghi chú. Đây không phải là một danh sách đầy đủ. Bạn cũng nên nhớ rằng các nhà tuyển dụng khác nhau sẽ tìm kiếm những thứ khác nhau và các thông lệ phỏng vấn phổ biến ở một khu vực có thể gần như hoàn toàn không được biết đến ở một khu vực khác. Vì vậy, chúng tôi thực sự khuyên bạn nên kết nối với các nhà phát triển trong khu vực địa phương của mình và nhờ họ tư vấn Ngoài ra, hãy xem wiki của /r/cscareerquestions -- và có thể là /r/cscareerquestionsEU nếu bạn đang sống ở EU Bây giờ tôi phải làm gì?Không còn là người mới bắt đầuSẽ có lúc mọi lập trình viên lớn lên và họ gặp phải một vấn đề, họ bị cuốn vào thế giới thực. Trong thế giới thực, không có sự nắm tay hay hướng dẫn chính. Thay vào đó, bạn cần học cách làm theo cách của bạn. Nếu bạn đã đi xa đến mức này, bạn nên có một lĩnh vực mà bạn quan tâm, có thể đó chỉ là lập trình chung, phát triển web, thuật toán hoặc bất kỳ thứ gì tương tự. Có thể, bạn muốn tìm hiểu về các lĩnh vực khác, khác liên quan đến lập trình, hoặc có thể, bạn chỉ muốn biết phải làm gì tiếp theo Khi bạn bắt đầu lập trình, bạn có thể tự hỏi khi nào mình sẽ học cách tạo Reddit tiếp theo hoặc khi nào bạn sẽ học cách tạo ra những đồ họa lạ mắt đó hoặc cách thực hiện các thuật toán khác nhau. Chà, nếu bạn coi mình không còn là người mới bắt đầu nữa, thì bạn đã có chương trình dưới vành đai công cụ của mình. Bây giờ bạn cần học cách áp dụng nó và cách củng cố nó. Bạn sẽ sớm có thể làm được những điều này và học được tất cả về chúng Nâng cao kỹ năng lập trình của bạnNhiều người phải đối mặt với nỗi sợ rằng họ không đủ năng lực khi lập trình. Và do đó, nhiều người muốn cải thiện kỹ năng lập trình của họ. Nhưng, ở giai đoạn này, chỉ có một cách duy nhất để làm điều đó, và đây là thực hành. Có rất nhiều trang web và địa điểm dành riêng cho việc luyện tập, chẳng hạn như /r/dailyprogrammer, CodeWars, HackerRank, Project Euler, và nhiều trang khác linh tinhĐể biết danh sách các cộng đồng liên kết, hãy xem -- và cụ thể là phần "Trợ giúp theo thời gian thực" Xin lưu ý rằng /r/learnprogramming không được liên kết chính thức với bất kỳ cộng đồng nào được liệt kê trên trang đó. Các nhóm kiểm duyệt của tất cả các cộng đồng được liệt kê là khác biệt và độc lập với cộng đồng này Làm thế nào để dạy một đứa trẻ lập trình?Hãy thử kiểm tra /r/ProgrammingForKids và /r/CSeducation. Cả hai subreddits sẽ chứa các tài nguyên và đề xuất hữu ích về cách dạy người khác Bạn cũng có thể thử chạy truy vấn này để tìm các cuộc thảo luận trước đây về câu hỏi này Một số tài nguyên thường được đề xuất bao gồm
Làm cách nào tôi có thể đóng góp cho các dự án mã nguồn mở?Tham gia vào một trong các dự án trong nhóm github /r/learnprogramming. Nhóm này do jfredett tạo ra với mục đích rõ ràng là cung cấp các dự án cho các lập trình viên mới để học cách đóng góp cho nguồn mở bằng cách tương tác với các lập trình viên có kinh nghiệm hơn với tư cách là người cố vấn Nhóm vẫn còn ở giai đoạn sơ khai nhưng một số người đang làm việc để thiết lập và vận hành nó Dưới đây là một số trang web chứa liên kết đến các dự án đang tích cực tìm kiếm những người đóng góp ở mọi cấp độ kinh nghiệm và thường sẽ liên kết đến các lỗi hoặc sự cố đang mở mà người mới bắt đầu rất dễ tiếp cận Dưới đây là một số chủ đề trước đây về làm việc trên các dự án nguồn mở Tôi có một câu hỏi về C/Python/một số ngôn ngữ cụ thểHãy thử tham khảo các wiki dành riêng cho ngôn ngữ của chúng tôi để xem câu hỏi của bạn có được liệt kê ở đó không Câu hỏi của tôi không phải là một trong số này;Kiểm tra hướng dẫn khắc phục sự cố nhanh dành cho người mới bắt đầu và trang Câu hỏi thường gặp cho ngôn ngữ bạn đang sử dụng để xem ngôn ngữ đó có được trả lời ở một trong hai vị trí không. Không thì đăng đi Hãy thử cũng kiểm tra Vâng, câu hỏi tôi đang hỏi nằm trong phần Câu hỏi thường gặp, nhưng tôi muốn nhận được câu trả lời từ những người thựcCâu hỏi thường gặp này và các trang còn lại trong wiki /r/learnprogramming đều do cộng đồng biên tập. Những câu trả lời này là sản phẩm của cộng đồng và chúng đến từ những người thực. Nếu câu hỏi của bạn được liệt kê ở đây trong phần Câu hỏi thường gặp, đó là vì nó đã được hỏi nhiều lần trước đây. Câu hỏi thường gặp này là tập hợp các câu trả lời thường được đưa ra và chấp nhận cho những câu hỏi này. Vui lòng cân nhắc xem câu hỏi của bạn có thực sự khác biệt đáng kể so với câu hỏi được trả lời ở đây trong phần Câu hỏi thường gặp hay không trước khi yêu cầu mọi người dành thời gian trả lời cá nhân cho một câu hỏi đã được hỏi đi hỏi lại Nếu câu hỏi của bạn thực sự khác biệt đáng kể và câu trả lời trong Câu hỏi thường gặp này không thỏa đáng, thì vui lòng cho biết trong bài đăng của bạn rằng bạn đã đọc Câu hỏi thường gặp và cho biết chính xác câu hỏi của bạn khác biệt như thế nào và câu trả lời ở đây không hữu ích với bạn như thế nào. Điều này sẽ cho thấy rằng bạn đã nỗ lực tìm câu trả lời cho câu hỏi của mình và sẽ giúp tập trung vào các câu trả lời cho câu hỏi của bạn Làm cách nào để chỉnh sửa wiki /r/learnprogramming (bao gồm cả Câu hỏi thường gặp này)?Chúng tôi khuyến khích bạn đóng góp, nhưng hiện tại wiki chỉ là người kiểm duyệt chỉnh sửa để ngăn những kẻ gửi thư rác thêm các liên kết của họ một cách thiếu kiểm soát. Vui lòng gửi cho người điều hành một tin nhắn với thông tin bạn muốn thêm/thay đổi. Người điều hành vẫn có quyền từ chối thay đổi nếu các đề xuất không phù hợp Cái nào khó hơn C hay Java?Mọi người đều nhất trí rằng Java dễ học hơn vì cú pháp của nó gần với ngôn ngữ tự nhiên hơn C.
Ngôn ngữ C có khó nhất không?Không, C không phải là ngôn ngữ khó nhất . Viết mã nói chung không khó để học. Tuy nhiên, ngôn ngữ lập trình tương đối khó học. Nếu bạn là người mới bắt đầu lập trình, bạn có thể bắt đầu bằng cách xây dựng nền tảng vững chắc về khoa học máy tính trước khi chuyển sang C.
Java có phải là ngôn ngữ khó học nhất không?Mặc dù một số ngôn ngữ lập trình phức tạp và khó học, nhưng Java thì không . Các nhà phát triển cho biết ngôn ngữ này rất dễ tiếp thu. Cú pháp của nó đơn giản, giúp dễ hiểu, viết và bảo trì. Với Java, các nhà phát triển có thể viết một lần và chạy mọi nơi (WORA).
C có phải là ngôn ngữ dễ nhất không?Mặc dù C là một trong những ngôn ngữ khó học hơn , nhưng đây vẫn là ngôn ngữ đầu tiên tuyệt vời vì hầu hết tất cả các ngôn ngữ lập trình đều được triển khai . Điều này có nghĩa là một khi bạn học C, sẽ rất đơn giản để học thêm các ngôn ngữ khác như C++ và C#. |