Lập trình viên thuộc vào ngành nào | ĐÀO TẠO CÁC KHÓA HỌC NGẮN HẠN-DÀI HẠN
1. Nghề lập trình viên là gì?
Nó có sức hút đặc biệt bởi “hình ảnh những cô gái chàng trai trí thức sáng sủa ngồi trong phòng lạnh lãnh lương cao và lướt net không tốn tiền”. Nhưng nhiều người còn khá mơ hồ về khái niệm lập trình viên. Hãy cùng tìm hiểu lập trình viên thực chất làm công việc gì.
NIIT – ICT Hà Nội – Bạn có biết đến Nguyễn Hà Đông – tác giả trò chơi Flappy Bird nổi tiếng thế giới và đạt tới 3 triệu lượt tải/ngày Đó chính là một lập trình viên xuất sắc đấy.
Nguyễn Hà Đông tác giả của Game Flappy Bird từ lập trình
Lập trình viên (người lập trình hay thảo chương viên điện toán) là người viết ra thiết kế xây dựng và bảo trì các chương trình máy tính (phần mềm). Bằng cách thao tác các đoạn mã (các ngôn ngữ) trên các công cụ lập trình họ có thể tạo ra các chương trình mới sửa lỗi hay nâng cấp chương trình đó để tăng tính hiệu quả của việc sử dụng máy tính.
Nghề lập trình viên là người viết, thiết kế, xây dựng và bảo trì các phần mềm
Một số ngôn ngữ mà dân lập trình sử dụng phổ biến là C, C++, C#, Java, Python, Visual Basic, Lisp, PHP và Perl.
2. Nghề lập trình viên làm gì
Công việc của người trong nghề lập trình viên được gọi là software engineering. Để làm ra một phần mềm trước hết người ta phải tạo ra một bản thiết kế mỗi người lập trình đảm nhiệm một phần việc, sau đó các phần được kết nối lại tạo thành một sản phẩm hoàn chỉnh.
Một người lập trình được ví là những thợ coding (người ngồi gõ những dòng lệnh trên máy tính) làm ra các phần mềm hoặc chỉnh sửa phát triển nó dựa trên các công cụ lập trình.
Lập trình viên được phân chia cụ thể theo các hình thức lập trình: lập trình web lập trình hệ thống lập trình Database lập trình game lập trình mobile.
Công việc chính của người làm nghề lập trình viên là viết và kiểm tra phần mềm.
Nhiệm vụ chính của người lập trình là:
Xây dựng mới một ứng dụng.
Nâng cấp và sửa chữa các ứng dụng có sẵn.
Xây dựng các chức năng xử lý.
Nghiên cứu và phát triển công nghệ mới.
Cụ thểngười trong nghề lập trình viên làm những công việc sau.
Viết chương trình bằng nhiều ngôn ngữ như C++, Java.
Cập nhật chương trình và mở rộng chương trình có sẵn: công việc của lập trình viên rất gần với công việc của những người phát triển phần mềm. Khi xảy ra vấn đề lập trình viên có thể làm những công việc của người phát triển phần mềm như thiết kế chương trình/
Gỡ rối cho các chương trình bằng cách kiểm tra lỗi và sửa lỗi sai.
Xây dựng và sử dụng công cụ phần mềm hỗ trợ máy tính (CASE) để tự động mã hóa một đoạn mã.
Sử dụng thư viện mã số để đơn giản hóa tài liệu.
Lập trình viên học ngành nào? trong trường Đại học – Cao Đẳng tại Việt Nam?
>>> Tham khảo:trong trường Đại học – Cao Đẳng tại Việt Nam?
3. Nghề lập trình viên làm việc ở đâu?
Người làm nghề lập trình có thể làm việc ở bất kì đâu trên thế giới trong xu thế toàn cầu hóa như hiện nay.
Lập trình viên thường làm trong văn phòng hầu hết những người lập trình làm việc trong hệ thống máy tính các công ty thiết kế phần mềm công ty công nghệ và hoặc các công ty doanh nghiệp có liên quan đến các dịch vụ công nghiệp. Cũng có một số lập trình viên lựa chọn làm việc độc lập tại nhà.
Lập trình viên hoàn toàn có thể làm việc tại nhà.
Lập trình viên có thể làm một mình nhưng cũng có thể làm theo dự án lớn. Hầu hết lập trình viên làm việc toàn thời gian. Ngoài ra trong một số hoàn cảnh, người trong nghề lập trình viên phải làm thêm giờ để hoàn thành công việc.
4. Học nghề lập trình viên ở đâu
Bạn có thể học nghề lập trình viên tại NIIT – ICT Hà Nội một môi trường giáo dục và đào tạo công nghệ thông tin với hơn 3500 trung tâm đào tạo tại hơn 44 quốc gia (Theo nguồn thông tin của NIIT Ấn Độ).
Phân biệt ngành khoa học máy tính và công nghệ thông tin
Đối với người ngoại đạo, khoa học máy tính (computer science) và công nghệ thông tin (information technology) có vẻ không khác nhau nhiều. Trên thực tế, có ba lĩnh vực quan trọng liên quan đến việc nghiên cứu máy tính được giảng dạy ở cấp đại học là kỹ thuật máy tính (computer engineering) công nghệ thông tin (information technology) và khoa học máy tính (computer science).
Lập trình viên công nghệ 4.0 và tương lai
Đây là các chuyên ngành trong cùng một lĩnh vực nghiên cứu. Tuy nhiên mỗi chuyên ngành tập trung vào các khía cạnh cụ thể của lĩnh vực và nghề nghiệp trong ba chuyên ngành này cũng phân hóa rõ rệt.
Mentor Trần Quốc Tuấn – Đại học trực tuyến FUNiX sẽ đưa ra các thông tin để phân biệt hai chuyên ngành phổ biến được giảng dạy tại đại học là khoa học máy tính và công nghệ thông tin cũng như cơ hội nghề nghiệp của từng lĩnh vực.
Khoa học máy tính (Computer science)
Người nghiên cứu khoa học máy tính là các nhà khoa học. Họ tập trung vào lý thuyết ứng dụng tính toán. Điều đó có nghĩa là họ trả lời được câu hỏi “vì sao” đằng sau các chương trình máy tính. Sử dụng thuật toán cấu trúc dữ liệu và toán cao cấp các nhà khoa học máy tính phát minh ra những cách thức mới để thao tác và truyền tải thông tin. Họ thường quan tâm đến phần mềm hệ điều hành và việc triển khai.
Các nhà khoa học lập trình viên quốc tế cũng như các khóa học máy tính có thể thấy và hiểu được mã máy. Sinh viên ngành khoa học máy tính sẽ học nguyên tắc cơ bản của các ngôn ngữ lập trình khác nhau đại số tuyến tính và rời rạc thiết kế và phát triển phần mềm.
Tóm lại, các nhà khoa học máy tính có thể nói chuyện với máy tính. Chuyên ngành này dựa trên toán học – ngôn ngữ của máy tính. Những người theo đuổi ngành này sẽ hiểu tại sao máy tính hoạt động và có thể tạo ra một chương trình hoặc hệ điều hành với những tính năng như ý muốn.
Nghề nghiệp trong ngành khoa học máy tính
Khoa học máy tính là một chuyên ngành phát triển nhanh chóng và được kỳ vọng sẽ mở rộng cơ hội việc làm với mức lương cao. Nếu bạn đang theo đuổi một bằng khoa học máy tính dưới đây là một số công việc tiềm năng:
– Lập trình viên phát triển ứng dụng (Applications software developer): Áp dụng tư duy sáng tạo vào các ứng dụng và chương trình, nhà phát triển phần mềm thiết kế và xây dựng các chương trình, ứng dụng cho máy tính và thiết bị công nghệ. Ví dụ, Angry Birds hay Microsoft Office đều do các nhà phát triển phần mềm làm ra.
– Kỹ sư hệ thống (Systems engineer): Các kỹ sư hệ thống thiết kế và tạo ra các loại hệ thống này để sử dụng cho máy tính cá nhân, điện thoại và thậm chí cả xe hơi. Hệ điều hành cung cấp nền tảng cho máy tính và thiết bị hoạt động. Microsoft Windows, Linux và iOS là các ví dụ về các loại hệ điều hành.
– Phát triển web (Web developer): Các nhà phát triển web không phải là nhà thiết kế đồ họa. Các nhà thiết kế đồ họa tạo ra những hình ảnh bạn thấy trên các trang web; nhà phát triển web lập trình mã tạo nên chức năng trang web.
– Các nhà phát triển web tích hợp đồ họa, âm thanh và video vào trang web và theo dõi lưu lượng truy cập hiệu suất cũng như khả năng của trang web.
Công nghệ thông tin (Information technology)
Công nghệ thông tin cũng có thể gọi là hệ thống thông tin (information systems) hoặc quản lý hệ thống (systems administration). Về cơ bản, các chuyên gia công nghệ thông tin là những người sử dụng công nghệ.
Công nghệ thông tin sử dụng các hệ điều hành, phần mềm và ứng dụng có cùng nhau để tạo ra một hệ thống lớn hơn giải quyết một vấn đề cụ thể. Công nghệ thông tin xây dựng một mạng lưới từ các khối đã được thiết lập để thực hiện một nhiệm vụ, như dịch vụ đặt hàng nguồn cung cấp tự động.
Do tính chất của công việc các chuyên gia công nghệ thông tin có xu hướng tương tác với khách hàng và đồng nghiệp bên ngoài phòng ban của họ. Họ có thể giải thích cho khách hàng cách giải quyết các vấn đề công nghệ hoặc làm việc với chủ doanh nghiệp để xây dựng kế hoạch công nghệ đáp ứng nhu cầu kinh doanh của họ.
Sinh viên công nghệ thông tin sẽ nghiên cứu mạng và thiết kế cơ sở dữ liệu theo chiều sâu và thu nhận các lý thuyết toán cơ bản và toán cao cấp.
Nghề nghiệp trong ngành công nghệ thông tin
Ở mọi cấp độ từ các cửa hàng theo chuỗi đến các tập đoàn đa quốc gia doanh nghiệp đều cần công nghệ thông tin. Trong thập kỷ tới cơ hội nghề nghiệp trong ngành này được dự đoán sẽ tăng trưởng nhanh hơn mức trung bình. Tùy thuộc vào trình độ học vấn của bạn bằng cấp về công nghệ thông tin có thể đem đến một thu nhập vừa ý. Dưới đây là một số vị trí phổ biến:
– Nhà phân tích bảo mật thông tin (Information security analyst): Họ làm việc để ngăn chặn các cuộc tấn công mạng bằng cách theo dõi mạng lưới kinh doanh để tìm ra vi phạm, các điểm yếu và tạo ra kế hoạch khẩn cấp trong trường hợp bị tấn công.
– Chuyên gia hỗ trợ máy tính (Computer support specialist): Họ cung cấp lời khuyên và trợ giúp khắc phục sự cố cho cá nhân và doanh nghiệp có câu hỏi về phần mềm của họ.
– Quản trị viên cơ sở dữ liệu (Database administrator): Họ sử dụng phần mềm và các chương trình để tổ chức và lưu trữ thông tin cho mọi doanh nghiệp từ doanh nghiệp tài chính đến các công ty vận chuyển.
– Quản trị viên hệ thống (Systems administrator): Họ thực hiện việc bảo trì và vận hành hàng ngày của mạng doanh nghiệp gồm mạng LAN, WAN, mạng nội bộ và các hệ thống liên lạc khác.
Các nhà khoa học máy tính thiết kế và phát triển chương trình máy tính phần mềm và ứng dụng. Các chuyên gia công nghệ thông tin sử dụng và khắc phục sự cố các chương trình phần mềm và ứng dụng đó.
Hai ngành nghề này làm việc cùng nhau để đảm bảo phần cứng phần mềm và giao diện người dùng (UI) kết hợp thuận lợi để các máy tính có thể thực hiện nhiệm vụ mà doanh nghiệp và cá nhân yêu cầu.
Quá trình phân tích và thiết kế thuật toán
1 Devising algorithm – phân tích và phác thảo
Tạo ra một thuật toán trong thực tế là cả một nghệ thuật trong đó lập trình viên chính là nghệ sĩ.
Để hoàn thành được bước phân tích và phác thảo, ta cần đến khá nhiều kiến thức căn bản của môn Cấu trúc dữ liệu và giải thuật cụ thể đó là các chiến thuật thiết kế thuật toán gồm có 5 đại diện tiêu biểu:
Chia để trị – divide and conquer
Giải thuật tham ăn – Greedy Method
Lập trình quy hoạch động – Dynamic Programming
Back Tracking
Branch and Bound
divide-and-conquer
2 Algorithm Validation – Kiểm tra thuật toán
Một khi đã được thiết kế xong ta cần kiểm tra tính đúng đắn của nó bằng cách nhét thuật toán vào máy tính và đưa cho nó một đống input – dữ liệu đầu vào. Tất nhiên các dữ liệu này phải tồn tại dưới định dạng phù hợp. Mục tiêu của việc Validate thuật toán là để đảm bảo nó sẽ hoạt động trơn tru trên mọi ngôn ngữ lập trình.
3 Algorithm Analysis – Đánh giá thuật toán
Khi thuật toán chạy, nó cần tiêu tốn 2 thứ: thời gian xử lý của CPU để thực hiện các phép toán và bộ nhớ để chứa dữ liệu + chương trình thực thi. Do đó, ở giai đoạn này, ta đánh giá hiệu năng thuật toán theo 2 yếu tố: thời gian thực thi, bộ nhớ sử dụng.
Để hiểu sâu hơn mối quan hệ giữa thuật toán và tài nguyên máy tính, hãy tham khảo cuốn Programming From Ground Up của Jonathan Bartlett.
4 Program Testing- Test chương trình
Việc test chương trình được chia thành 2 giai đoạn: debugging và profiling.
Debugging là quá trình thực thi chương trình dựa trên một tập dữ liệu mẫu để xác định các lỗi xảy ra ( loại lỗi, vị trí lỗi,…) và khắc phục chúng. Tuy nhiên Debugging hầu như không bao giờ phát hiện được 100% lỗi. Đó là lý do các bản cập nhật và bản vá lỗi (patch) ra đời.
Profiling cũng là quá tình thực thi chương trình trên một tập dữ liệu mẫu nhưng lần này người ta sẽ đo thời gian cũng như dung lượng bộ nhớ. Khoan đã vậy thì khác gì bước Analysis ở trên?
debug-php
5 Algorithm Analysis và Performance Analysis?
Như chúng tôi đề cập ở trên một khi thuật toán được chạy nó sẽ sử dụng CPU để thực hiện các phép toán cũng như bộ nhớ trong để chưa dữ liệu + chương trình. Vì lí do đó thời gian và không gian bộ nhớ được chọn để đánh giá hiệu năng của thuật toán.
Ta có thể đánh giá hiệu năng của thuật toán bằng phương pháp thực nhiệm thông qua việc cài đặt thuật toán rồi chọn các tập dữ liệu mẫu để chạy thử. Sau đó thống kê các thông số nhận được để có đánh giá về thuật toán.
Tuy nhiên phương pháp thực nghiệm này gặp một số hạn chế khi áp dụng trên thực tế:
Phần cứng khác nhau
Thời gian thực thi của mã máy
Compiler – trình biên dịch
Giới hạn của ngôn ngữ lập trình sử dụng để cài đặt
Khó chọn lựa các bộ dữ liệu mẫu một cách tối ưu.
Như vậy việc so sánh các thuật toán bằng phương pháp thực nghiệm hiếm khi đạt được độ chính xác mong muốn.
Vì những lý do trên, người ta đã tìm kiếm những phương pháp đánh giá ít phụ thuộc môi trường hơn. Một trong số đó là phương pháp đánh giá thời gian thực hiện thuật toán theo hướng xấp xỉ tiệm cận qua khái niệm O() – gọi là Big O. (Hay còn gọi là độ phức tạp của thuật toán)
Thông thường các vấn đề mà chúng ta giải quyết có một kích thước tự nhiên (số lượng dữ liệu được xử lý) mà chúng ta sẽ gọi là N. Như vậy, để đánh giá thuật toán theo yếu tố thời gian, chúng ta sẽ biểu diễn thời gian cần thiết thông qua một hàm số của N. Chúng ta quan tầm đến 2 trường hợp: xấu nhất và trung bình.
Việc xác định thời gian trong trường hợp trung bình thường được quan tâm nhiều nhất vì nó đại diện cho đa số trường hợp sử dụng thuật toán. Tuy nhiên, với một số bài toán đặc thù, việc xác định thời gian trong trường hợp xấu nhất là rất quan trọng.