Thảo luận  Góc Lập Trình

jablonec
Cũng là một người hơi hơi mê bên lập trình, mãi sau này mình mới có hướng đi và đang xây dựng nền tảng cho đam mê này mỗi ngày. Để hiểu thêm về lập trình và cần chia sẻ kinh nghiệm của mỗi người về lập trình. Mình lập topic này mong muốn trao đổi và học hỏi kiến thức.
1. Học lập trình có khó không?
2. Học lập trình có cần giỏi toán không?
3. Học lập trình nên bắt đầu từ đâu?
.....
Cảm ơn mọi người đã đọc topic.

21.jpg
 
Sửa lần cuối:
Trả lời

duypk

Rìu Sắt
Mình có cái bài toán này, từ hồi sinh viên mình nghĩ ra do hay đánh bài.

Hồi đó đi làm thêm ở Metro được nghịch máy tính thích lắm nên mình lấy Excel ra mình lập functions rồi bắt Excel nó tự giải bằng cách điền vào ô trống. Bài toán như sau:

Có 9 ô trống được sắp xếp theo 3 cột 3 dòng theo thứ tự

A1, B1, C1
A2, B2, C2
A3, B3, C3

Có 9 số tự nhiên liên tiếp từ 1 đến 9
Hãy sắp xếp làm sao để Tổng của bất kỳ 3 ô hàng ngang, hàng dọc, hoặc đường chéo cộng lại đều bằng 15.
Tổng bằng 15 có nghĩa là

A1+B1+C1 = 15
A2+B2+C2 = 15
A3+B3+C3 = 15

A1+A2+A3 = 15
B1+B2+B3 = 15
C1+C2+C3 = 15

A1+B2+C3 = 15
A3+B2+C1 = 15

Điều kiện là số 5 nằm ở ô chính giữa ô số B2, bạn hãy xếp 8 số còn lại vào 8 ô trống.

Mình mày mò tầm 30 phút viết functions sau đó Excel tự điền 8 số còn lại vào 8 ô trống, đấy là lần đầu tiên trong đời mình xử dụng máy tính vào để tính toán và nó khiến cho mình thích thú đến tận bây giờ.
 

jablonec

Rìu Chiến Chấm
Mình mày mò tầm 30 phút viết functions sau đó Excel tự điền 8 số còn lại vào 8 ô trống, đấy là lần đầu tiên trong đời mình xử dụng máy tính vào để tính toán và nó khiến cho mình thích thú đến tận bây giờ.
Rất vui khi được nghe tâm sự của 2 bác @duypk, @dammage
 

jablonec

Rìu Chiến Chấm
Một bài viết hay của Mod @dongle905, rất đáng để chúng ta thảo luận.

 

tranhuulong9x

Rìu Sắt
Lập trình rất khó vì vấn đề bảo mật , tối ưu , nhiều điều mới .... làm khó lập trình
Lập trình cần toán nha vì nếu tốt toán thì có thể giải quyết và tối ưu code
Lập trình bắt đầu từ đầu thì bắt đầu từ tư duy toán , biết tiếng anh , biết teamwork ... và những điều đó làm mình tự đào thải khỏi trường uit
 

TrHH000

Rìu Sắt
Em thì không biết các bác như thế nào, nhưng theo em thì:
1.Dùng riết là quen, cũng không khó mà cũng chẳng dễ(Tốn cũng kha khá thời gian với một thằng không qua trường lớp nào như em)
2.Em thì nghĩ chuộng tiếng anh hơn. Còn toán thì em không chắc lắm nhưng trong quá trình của em thì kiến thức về toán sử dụng cũng không nhiều lắm.
3.Nếu như em thì em bắt đầu từ C#, sau lan man sang html rồi từ html chuyển đến css
 

jablonec

Rìu Chiến Chấm

Sổ tay học nhanh Python chỉ bằng 1 hình ảnh​


 

QuangDev

Gà con
vừa dễ vừa khó , mình gặp rất nhiều sinh viên mới học thì ham càng học càng nãn :D chung thì bạn cứ hiểu rằng cái gì có quy luật thì cái đó dễ , lập trình khi bạn nắm được quy luật thì vạn tính năng đều nằm trong đầu bạn
 
đừng nghe lời mấy thằng sinh viên kêu học C/ C++ chỉ phù hợp ở DH bạn cần tiết kiệm thời gian để còn áp dụng cái mình học ngay.
1 link cho bạn tham khảo bắt đầu nhiệp lập trình:
Theo mình thì Java còn cao lắm, mới đầu thì nên học Python hoặc Js - HTML - CSS thôi
 

duypk

Rìu Sắt
Theo mình thì Java còn cao lắm, mới đầu thì nên học Python hoặc Js - HTML - CSS thôi
Ý kiến cá nhân của mình thì bạn trên kia nói đúng.
C, C++, C# nếu biết thì tốt, ít ra cũng có 1 cái cơ bản sẽ dễ tiếp cận với các ngôn ngữ lập trình khác.
Tuy nhiên để đi nhanh hơn thì tốt nhất nhắm vào cái gì thì đi luôn vào cái đó, trên trường lớp thì cứ phải đi qua C với đủ loại khác sau đó mới tiếp cận cái mới.
Tuy nhiên thực tế bản thân mình tự đọc sách C và C++ và C# mình chả hiểu mẹ gì, nhưng mình tự tìm hiểu và tự mày mò đúng cái ngôn ngữ mình cần và áp dụng vào giải quyết các vấn đề mình cần thì nó lại nhớ lâu. Hồi hiểu cái ngôn ngữ mới kia rồi thì nó lại bảo cái ngôn ngữ mình học được phát triển giống C++, thế là lại mò đảo ngược về đọc code C++. Thành ra mình có thể đọc được cả C, C++, C# và cái ngôn ngữ lai lai mà mình đang xài.
Hồi đầu cũng lang thang diễn đàn nghe nói là muốn học được cái này thì phải biết cơ bản C++, mình tự học C++ ko hiểu và ko áp dụng dc nên cuối cùng mình tự học ngược thì lại okie.

VÌ VẬY ĐỪNG NGHĨ NÓ KHÓ, HÃY CỨ NGHĨ RẰNG NÓ ĐƠN GIẢN THÌ BẠN SẼ LÀM ĐƯỢC.
 

ndhai

Búa Gỗ Đôi
Thay vì hỏi lên đây, bạn lên mấy trang tìm việc xem chỗ bạn mong muốn họ yêu cầu sao, tìm hiểu về front-end, backend, AI, ... xem bạn thích hợp với cái nào hơn, rồi tìm thêm tài liệu về cái đó mà học vì sau cùng học cũng để đi kiếm việc làm cả thôi, khi học được chút đỉnh có thể xin đi thử việc hoặc vào on job training luôn là khác có kinh nghiệm. Mỗi người có hướng đí với cách thành công khác nhau bạn hỏi kiểu này thì họ cũng chỉ trả lời chung chung về cái họ nghĩ là đúng và cái giúp họ có vị trí như hiện tại thôi. Còn mình nghĩ cái quan trọng là bạn tìm ra mình muốn gì vì cái ngành này nó rộng lắm, à mà phần cấu trúc giải thuật nên học nhé, nhiều chỗ người ta thường có bài test về giải thuật với thuật toán đó.
 

bomia

Gà con
học lập trình không khó, không cần giỏi toán nhưng cần "biết" toán, nên bắt đầu từ vài cuốn sách do người sáng tạo ra ngôn ngữ đó viết.
 

jablonec

Rìu Chiến Chấm
Đang mò mẫm trong C#, đọc bài file, viết chương trình gặp phải lỗi này các bác ạ.

Code:
using System;
using System.IO;
namespace TextFile
{
class FileText
{
static string filel = "c:\\testfile.txt";
static void Main(string[] args)
{
StreamWriter sw;
sw = File.CreateText(filel);
sw.WriteLine("This is a text.");
sw.WriteLine("Dai Hoc Bach Khoa Ha Noi .");
sw.WriteLine("Trung tam Genetic Singapore.");
sw.WriteLine(123.456);
sw.Close();
StreamReader sr1;
string input;
sr1 = File.OpenText(filel);
input = sr1.ReadToEnd();
Console.WriteLine(input);
Console.WriteLine("The and of the atream!");
sr1.Close();
Console.ReadLine();
}

}
7.png

Error: System.UnauthorizedAccessException: 'Access to the path 'c:\testfile.txt' is denied.'

Tâm tư mấy ngày nay vẫn chưa biết sai ở chỗ lào, xui quá các bác ạ.
 

jablonec

Rìu Chiến Chấm
Mất công toi một ngày các bác ạ. Đang ngâm cứu c#, bài nút bấm. Đề bài yêu khi bấm vào Print thì hiện chữ: "Hi there", nhưng khi bấm thì không thấy hiện chữ. Có nên bỏ cuộc không??
Code:

using System;

using System.Windows.Forms;
using System.Drawing;
namespace NUTBAM
{
public class ButtonPress: Form
{
private Button print =new Button();
private Button clear=new Button();
private Label message=new Label();
public ButtonPress()
{
Text= "Button Press";
print.Text= "Print";
clear.Text= "Clear";
message.Text= "Message goes here";
//Size
Size=new Size(400,200);
message.Size=new Size(message.PreferredWidth, message.PreferredHeight);
//Locations
print.Location=new Point(20,30);
clear.Location=new Point(30 + print.Width + clear.Width, 30);
message.Location=new Point(40 + print.Width + clear.Width, 30);
//Note 6
//Add them to the form
Controls.Add(print);
Controls.Add(clear);
Controls.Add(message);
//Tell the Click events which methohs to the call
print.Click+=new EventHandler(Print_Click);
clear.Click+=new EventHandler(Clear_Click);
}
//method to make the Print button work
protected void Print_Click(Object sender, EventArgs e)
{
//Note 9
message.Text="Hi there";
}
//method to make the Clear button work
protected void Clear_Click(Object sender, EventArgs e)
{
message.Text="";
}
static void Main()
{
Application.Run(new ButtonPress());
}

}
}
Hình như dưới:

Untitled.png
 

jablonec

Rìu Chiến Chấm
Mình đang gặp khó khăn ở bài này, bác nào đã làm qua hướng dẫn em 1 tý được không ạ. Chứ nó cũng dài lắm.

78.png
 

ntd252

Búa Đá
Lập trình dựa trên 2 loại tư duy chính:
- Tư duy về thuật toán, là kĩ năng phân tích một vấn đề lớn thành những vấn đề cơ bản, kinh điển, hay những bài toán có tính cô đọng cao. Có những ý tưởng thuật toán dựa rất nhiều vào các phương trình toán học (ví dụ thuật toán PID và Kalman dùng trong điều khiển các máy móc tự động hoá), có những loại bài toán thì dựa trên sự tổ chức dữ liệu, như bài toán tìm đường ngắn nhất trên bản đồ.
- Tư duy về đặc tính kĩ thuật mỗi ngôn ngữ lập trình. Đây là khả năng hiểu biết sâu vào cú pháp trong các ngôn ngữ và cách các ngôn ngữ sử dụng tài nguyên máy tính (CPU, RAM, GPU).

Mỗi bài toán kĩ thuật đều cần 2 khả năng tư duy trên để có một hệ thống tối ưu. Tuy nhiên, tuỳ năng lực, có người hợp với các vấn đề ở tầng cao (ít quan tâm tới phần cứng bên dưới) như hệ thống mạng, thuật toán cá nhân hoá quảng cáo, thuật toán deep learning, có người lại thích làm việc với khía cạnh phần cứng nhiều hơn, như bài toán nhúng trong điều khiển máy móc, thiết bị. Thế nên, cần xác định khả năng của bản thân để có chiến lược phù hợp hơn.

Lập trình cũng là một kĩ năng, cũng giống như ngôn ngữ giao tiếp, cần được thực hành liên tục để quen và thuần thục. Khi bắt đầu học, điều quan trọng nhất vẫn là tư duy lập trình, nghĩa là ngôn ngữ không quan trọng, bạn có thể học bất kì ngôn ngữ nào mà mình muốn, miễn là có nguồn tài liệu, bài tập phong phú và cộng đồng nhiệt tình. Hơn hết, hãy cố gắng thành thạo tiếng Anh.

Cá nhân mình sẽ khuyên học C trước vì đây là ngôn ngữ cơ bản nhưng mạnh mẽ, đủ tính "cơ bắp" để rèn luyện, học theo quyển C Programming: A Modern Approach của K.N.King, với bài tập và lời giải phòng phú. Sau đó học python theo khoá Python for Everybody của Coursera , một khoá rất hay và cơ bản giới thiệu cả về python và các vấn đề cốt lõi trong cơ sở dữ liệu và hệ thống mạng. https://www.coursera.org/specializations/python
Khi học xong 2 sách và khoá này, bạn sẽ có đủ kiến thức để thấy mình hợp với vấn đề thuộc mảng nào để sau đó đi sâu hơn. Và khi học, nên làm quen dần với các công cụ chuyên nghiệp. Ví dụ thay vì dùng Dev c làm môi trường lập trình C, hay dùng visual studio code và bộ dịch gcc, thử tìm cách cấu hình bằng tay. Nó sẽ giúp bạn quen dần với các môi trường làm việc hơn.