Lập trình UD Desktop_01_Tổng quan

Các bạn đi học đem theo laptop và ổ cắm điện, sẽ vừa học lý thuyết vừa thực hành luôn trên lớp.

Trả lời các câu hỏi. Xem và làm theo các clip ở nhà trước các buổi học (giáo viên sẽ kiểm tra và cho điểm)
----

1         Mở đầu


1.1       Mô hình Bloom


Áp dụng mô hình Bloom[1] vào việc học và làm việc, có thể hiểu nôm na là để tìm hiểu và làm việc trong lĩnh vực lập trình cần trải qua các bước sau, Biết > Hiểu > Vận dụng > Phân tích > Tổng hợp > Đánh giá, xem thêm phần giải thích dưới đây:

Đánh giá (evaluation)
Đánh giá được giải pháp đó là hợp lý hay không
Tổng hợp (synthesis)
Gắn kết các thành phần lại để tạo ra một hệ thống mới
Phân tích (analysis)
Nhận biết được nguyên lý tổ chức, hiểu được sự gắn kết của các thành phần
Vận dụng (application)
Áp dụng vào làm thực tế, áp dụng trong các tình huống khác nhau
Hiểu (comprehension)
Hiểu được tại sao lại phải làm như thế
Biết (knowledge)
Nhớ và làm theo

Phương pháp học là,

– Xem các bài hướng dẫn, rồi làm theo. Ghi lại quá trình học (đã coi clip nào, các trang web hay, các tài liệu hay)

– Ghi lại các khái niệm chưa biết, tìm đọc tài liệu, để hiểu các khái niệm này. Ghi chép lại các khái niệm này

– Qua việc làm theo, ghi chép, tìm hiểu, người học sẽ biết được để làm lập trình cần các công cụ gì, sử dụng các công cụ đó như thế nào, bước đầu có những khái niệm ở mức cơ bản (hiểu)

– Tự làm các dự án nhỏ (lưu trên Github, để giới thiệu với nhà tuyển dụng)

– Xin làm thêm để học nghề


1.2       Theo lập trình, nên học gì?


1.2.1       Về Stack Overflow


– Là một mạng xã hội lớn, uy tín của các lập trình viên trên thế giới

– Giúp các lập trình viên tìm kiếm giải pháp cho các vấn đề gặp phải trong công việc hàng ngày; là nơi mỗi cá nhân thể hiện trình độ của mình thông qua việc giúp đỡ các đồng nghiệp khác; tuyển người làm & tìm việc làm

– Jeff Atwood và Joel Spolsky (người Mỹ) sáng lập Stack Overflow năm 2008

– Hơn 50M lượt người truy cập mỗi tháng, trên 14M câu hỏi, trên 19M trả lời

­– Thực hiện các khảo sát hàng năm, năm nay là lần thứ 8, với hơn 100.000 lập trình viên đang làm việc tại 183 quốc gia và vùng lãnh thổ tham gia khảo sát

­– Nội dung khảo sát liên quan đến ngành lập trình[2],[3],[4],[5],[6]


1.2.2       Nên chọn công việc nào để theo học


Bảng sau là một số công việc phổ biến của nghề lập trình, đồng thời cho biết tỉ lệ của mỗi công việc dựa trên số người được khảo sát. Tham khảo để chọn sẽ theo học cái gì? Thông thường, nên chọn công việc có nhiều người đang làm, tức thị trường đang cần nhiều. Hoặc có người đang làm nghĩa là có nhu cầu tuyển dụng, vì vậy học cái gì cũng được, nếu thực sự đam mê. Tuy nhiên, nếu chưa thử hết các công việc làm sao biết mình thích cái nào hơn cái nào? Cần người tư vấn và tự trải nghiệm?

Loại công việc
Tỉ lệ
Loại công việc
Tỉ lệ
Back-end developer
57.9%
Data or business analyst
8.2%
Full-stack developer
48.2%
Data scientist or machine learning specialist
7.7%
Front-end developer
37.8%
QA or test developer
6.7%
Mobile developer
20.4%
Engineering manager
5.7%
Desktop or enterprise applications developer
17.2%
Embedded applications or devices developer
5.2%
Student
17.1%
Game or graphics developer
5.0%
Database administrator
14.3%
Product manager
4.7%
Designer
13.1%
Educator or academic researcher
4.0%
System administrator
11.3%
C-suite executive (CEO, CTO, etc.)
3.8%
DevOps specialist
10.4%
Marketing or sales professional
1.2%


1.2.3       Mức lương của mỗi công việc

Ngoài yếu tố dễ xin việc, hợp với đam mê của bản thân, cũng nên quan tâm tới mức lương của mỗi công việc. Tất nhiên, lương cao thì đòi hỏi trình độ, kinh nghiệm, áp lực công việc cũng cao.

Loại công việc
Mức lương
Loại công việc
Mức lương
Engineering manager
$89,000
System administrator
$56,000
DevOps specialist
$72,000
QA or test developer
$55,000
Data scientist or machine learning specialist
$60,000
Database administrator
$51,000
Data or business analyst
$59,000
Front-end developer
$51,000
Embedded applications or devices developer
$59,000
Designer
$46,000
Full-stack developer
$59,000
Educator or academic researcher
$44,000
Desktop or enterprise applications developer
$57,000
Mobile developer
$43,000
Back-end developer
$56,000
Game or graphics developer
$40,000


1.2.4       Chọn công nghệ nào để theo


Với mỗi công việc có thể lựa chọn nhiều công nghệ khác nhau, bao gồm: ngôn ngữ lập trình, cơ sở dữ liệu, mã nguồn mở hay đóng, trình viết mã, framework, thư viện.

Ngôn ngữ

Bảng dưới đây là danh sách các ngôn ngữ phổ biến đang được mọi người sử dụng,

Ngôn ngữ
Tỉ lệ
Ngôn ngữ
Tỉ lệ
JavaScript
71.5%
Swift
8.3%
HTML
69.4%
Objective-C
7.3%
CSS
66.2%
Go
7.2%
SQL
58.5%
Assembly
6.9%
Java
45.4%
VB.NET
6.9%
Bash/Shell
40.4%
R
6.0%
Python
37.9%
Matlab
5.5%
C#
35.3%
VBA
4.8%
PHP
31.4%
Kotlin
4.7%
C++
24.6%
Groovy
4.5%
C
22.1%
Scala
4.5%
TypeScript
18.3%
Perl
4.2%
Ruby
10.3%



Cơ sở dữ liệu

Bảng dưới đây là danh sách các cơ sở dữ liệu phổ biến đang được mọi người sử dụng,

Cơ sở dữ liệu
Tỉ lệ
Cơ sở dữ liệu
Tỉ lệ
MySQL
58.7%
Memcached
5.5%
SQL Server
41.2%
Amazon DynamoDB
5.2%
PostgreSQL
32.9%
Amazon RDS/Aurora
5.1%
MongoDB
25.9%
Cassandra
3.7%
SQLite
19.7%
IBM Db2
2.5%
Redis
18.0%
Neo4j
2.4%
Elasticsearch
14.1%
Amazon Redshift
2.2%
MariaDB
13.4%
Apache Hive
2.2%
Oracle
11.1%
Google BigQuery
2.1%
Microsoft Azure (Tables, CosmosDB, SQL, etc)
7.9%
Apache Hbase
1.7%
Google Cloud Storage
5.5%



Framework, thư viện, công cụ

Bảng dưới đây là danh sách các framework, thư viện, công cụ phổ biến đang được mọi người sử dụng,

Framework, thư viện, công cụ
Tỉ lệ
Framework, thư viện, công cụ
Tỉ lệ
Node.js (JS)
49.6%
Cordova (JS mobile)
8.5%
Angular (JS)
36.9%
TensorFlow (Machine Learning)
7.8%
React (JS)
27.8%
Xamarin (mobile app)
7.4%
.NET Core
27.2%
Spark (Java)
4.8%
Spring (Java)
17.6%
Hadoop (big data, distributed data)
4.7%
Django (Python)
13.0%
Torch/PyTorch (deep learning – python)
1.7%

Trình viết mã

Bảng dưới đây là danh sách trình soạn thảo mã nguồn (IDE, code editor) đang được mọi người sử dụng,

IDE/code editor
Tỉ lệ
IDE/code editor
Tỉ lệ
Visual Studio Code
34.9%
PHPStorm
9.0%
Visual Studio
34.3%
NetBeans
8.2%
Notepad++
34.2%
IPython / Jupyter
7.4%
Sublime Text
28.9%
Emacs
4.1%
Vim
25.8%
Rstudio
3.3%
IntelliJ
24.9%
RubyMine
1.6%
Android Studio
19.3%
TextMate
1.1%
Eclipse
18.9%
Coda
0.6%
Atom
18.0%
Komodo
0.6%
PyCharm
12.0%
Zend
0.4%
Xcode
10.6%
Light Table
0.2%

Các nhóm công nghệ liên quan

Hình sau là các nhóm công nghệ liên quan,




Một số hướng đang được quan tâm nhiều

– Web

– Mobile

– IoT

– Machine Learning

– Data Science


1.3       Theo nghề web, nên học gì?


Muốn làm web cần học chuyên môn và tối thiểu phải biết sử dụng tiếng Anh.

Về khả năng sử dụng tiếng Anh, bước đầu tiên cần phải có là khả năng đọc để hiểu tài liệu chuyên ngành bằng tiếng Anh. Để hiểu được tiếng Anh chuyên ngành, cần hai thứ: từ vựng là quan trọng nhất, sau đó đến ngữ pháp (cấu trúc câu, mệnh đề, chia động từ, thể bị động, thể chủ động, các từ loại).

Ví dụ một cách học tiếng Anh chuyên ngành:

– Chọn một chủ đề bạn quan tâm (về HTML chẳng hạn)

– Đọc sách/tài liệu tiếng Việt về HTML trước, chọn cuốn sách/tài liệu nào mà tác giả hay ghi các thuật ngữ tiếng Anh đi kèm là tốt nhất

– Đọc hiểu hoặc làm theo sách/tài liệu tiếng Anh về HTML

– Nếu được, nên tập dịch tài liệu từ tiếng Anh ra tiếng Việt

– Trong quá trình học, nên viết các từ tiếng Anh chưa biết nghĩa ra giấy, tra nghĩa của nó, viết một hai lần thôi, chứ đừng viết liền một lúc cả trăm lần từ đó, điều này làm mất thời gian và cũng sẽ quên. Sau này nếu gặp lại từ này mà mình chưa nhớ nghĩa, thì lại viết lại và tra nghĩa lại, cho tới khi nào thực sự nhớ được từ và nghĩa của nó thì thôi, không phải viết và tra nghĩa nữa. Qua việc viết, từ mới cùng với nghĩa của nó sẽ đi vào đầu mình lúc nào không hay!

Ban đầu cần học để có thể đọc hiểu được tài liệu chuyên môn bằng tiếng Anh, sau đó học nghe, nói, viết; nếu học thêm được các ngoại ngữ khác càng tốt (tiếng Nhật chẳng hạn).

Về chuyên môn, bảng dưới đây là liệt kê một số những thứ cần học mang tính tham khảo, người học sẽ cảm thấy việc học nhẹ nhàng và hiệu quả hơn nếu học đúng theo trình tự. Tuy nhiên, nếu tự học hoặc vì điều kiện nào đó mà không thể đáp ứng được đúng thứ tự như trong bảng cũng không sao. Cứ tự tin học, thấy còn thiếu kiến thức gì thì bổ sung từ từ, quan trọng là đam mê, kiên trì và dám bước tới.

Xem bảng minh họa một số thứ cần học (chỉ mang tính tham khảo),

Kiến thức
Mô tả chi tiết
Kiến thức chung (dù theo front-end hay back-end)
- Kiến thức nền về Hệ điều hành, Kĩ thuật lập trình, Cấu trúc dữ liệu và thuật toán, Lập trình hướng đối tượng, Cơ sở dữ liệu
- Kiến thức nền về WWW, Mạng máy tính
- Kĩ năng và thái độ về khía cạnh kĩ thuật (cách viết mã, lựa chọn giải thuật, tổ chức mã nguồn chuyên nghiệp), cũng như khía cạnh nghề nghiệp (cách làm việc chuyên nghiệp, hiệu quả và hạnh phúc với nghề)
- Phần mềm Quản lý phiên bản/quản lý mã nguồn: Git, SVN, TFS
- AJAX / Web API
- RESTful API / HTTP method
- Cơ bản về lập trình front-end và back-end
Front-end
- HTML, CSS, JavaScript
- Các thư viện và framework phổ biến (ví dụ: jQuery, Bootstrap, AngularJS, ReactJS, VueJS)
- Responsive design, UI/UX
- Các kiến thức nâng cao (ví dụ: mô hình MVC, design pattern, lập trình bất đồng bộ trong JavaScript)
Back-end
- Các ngôn ngữ phổ biến: Java, C#, PHP, Ruby, Python, NodeJS
- Cơ sở dữ liệu (SQL, mySQL, MongoDB)
- Mô hình MVC, Design pattern
- Các framework của mỗi ngôn ngữ
- Các kiến thức nâng cao (ví dụ Dependency Injection, Inversion of Control, SOLID)
- Các kiến thức về triển khai, bảo mật

Bảng trên là liệt kê các thứ cần học để tham khảo thôi. Để nắm hết các nội dung đó quả là thử thách thực sự, và cũng không cần thiết.

Phương pháp học là:

– Học từ dễ đến khó, học chắc từng khái niệm cơ bản, khi có cái nền tốt rồi, cứ từng bước bồi đắp thêm các kiến thức mới, mọi thứ rất logic và nhẹ nhàng

– Bắt đầu là HTML, CSS, JavaScript, một vài thư viện/framework phổ biến (ví dụ: jQuery, Bootstrap, AngularJS, VueJS, ReactJS)

– Sau đó là một ngôn ngữ back-end nào đó cùng với cơ sở dữ liệu tương ứng (Java, C#, PHP, Python, Ruby, mySQL, SQL), một vài framework phổ biến

– Mục tiêu là hiểu được cách thức để làm được một sản phẩm web hoàn chỉnh (đây chính là học front-end và back-end cơ bản)

– Trong quá trình học sẽ gặp một số khái niệm, mô hình, cố gắng tìm hiểu để nắm bắt

– Làm thực hành thật nhiều, tự làm các dự án từ dễ đến khó

– Học từ các trang dạy làm web tại Facebook/Github/Youtube/Website/Blog hoặc học từ chia sẻ của các anh/chị trong nghề

– Cuối cùng, quan trọng nhất là phải kiên trì, chăm chỉ, “cứ đi ắt sẽ đến!”.


1.4       Theo nghề lập trình ứng dụng Desktop học gì?


Theo Microsoft:


Lựa chọn công nghệ


– UWP (Universal Windows Platform): C#, C++, VB, JavaScript. Windows 10

– .NET (WinForms, WPF): C#, C++, F#, VB

– Windows API (C++ và Win32):  C++ with COM. Tối ưu về tốc độ thực thi


1.5       Giới thiệu môn học


– Mã học phần: CT3111D

– Tên học phần: Lập trình cơ sở dữ liệu

– Số tín chỉ: 4 (2 LT + 2 TH)

– Hình thức đánh giá:
            – Chuyên cần (10%) + tập tin ghi chép (10%) + kiểm tra thực hành: 30%
– Thi cuối kỳ: 50% (trên máy)

– Tài liệu tham khảo: bài giảng, tài liệu, bài lab, Internet

– Email giáo viên: legiacong@gmail.com

– Tài nguyên môn học lấy tại đây (cập nhật thường xuyên): https://drive.google.com/open?id=1CgBCZg44WUhd1hRBbOsGSlRVNEnmOovx

Nội dung môn học:

– Nắm được các khái niệm liên quan đến CSDL

– Lập trình cơ sở dữ liệu với Windows Form

– CRUD (Create, Read, Update & Delete)

– LinQ

– Entity Framework

2. Lập trình WinForms

2.1 Cài đặt Visual Studio


Danh sách các phiên bản Visual Studio, C# và Framework .NET[9]

Visual Studio
Phiên bản
.NET framework
Năm
Visual Studio 2019
16.0
Chưa biết
Chưa biết
Visual Studio 2017
15.0
3.5 – 4.7
March 7, 2017
Visual Studio 2015
14.0
2.0 – 4.6
July 20, 2015
Visual Studio 2013
12.0
2.0 – 4.5.2
October 17, 2013
Visual Studio 2012
11.0
2.0 – 4.5.2
September 12, 2012
Visual Studio 2010
10.0
2.0 – 4.0
April 12, 2010
Visual Studio 2008
9.0
2.0, 3.0, 3.5
November 19, 2007
Visual Studio 2005
8.0
2.0, 3.0
November 7, 2005
Visual Studio .NET 2003
7.1
1.1
April 24, 2003
Visual Studio .NET (2002)
7.0
1.0
February 13, 2002
Visual Studio 6.0
6.0
N/A
June 1998
Visual Studio 97
5.0
N/A
February 1997

Bản Visual studio nào miễn phí, bản nào phải trả tiền?

Ví dụ, với Visual Studio 2017 thì nên chọn bản miễn phí là Community.

Bản phải trả tiền là Professional và Enterprise


Lab 1. Chọn phiên bản và cài đặt Visual Studio

Câu hỏi 1. Bạn đã và sẽ áp dụng mô hình bloom vào việc học như thế nào?

Câu hỏi 2. Bạn dự định làm gì sau khi ra trường, bạn đã, đang và sẽ tập trung học những kiến thức gì?

Câu hỏi 3. Phân biệt Visual Studio, .NET framework và C#?

Câu hỏi 4. Phân biệt code editor và IDE?

2.2 Tổng quan về lập trình WinForms

WinForms[1] hay Windows Forms là một thư viện hỗ trợ lập trình các ứng dụng chạy trên desktop, laptop và tablet.

Nó là một thành phần trong Framework .NET của Microsoft.

Ra đời năm 2003, tới năm 2014 Microsoft ngưng cập nhật các chức năng mới cho WinForms.

Ưu điểm của WinForms là đơn giản, lập trình dễ dàng.

Xem hình minh họa nền tảng .NET 3.0,





Hình sau là các phiên bản của Framework .NET[2]



WPF

WPF (Windows Presentation Foundation) là công nghệ kế tiếp của WinForms, dùng để xây dựng các ứng dụng cho các máy tính chạy Windows.

WPF ra đời năm 2006, sử dụng XAML để làm giao diện.

Có nhiều tính năng nổi trội hơn so với WinForms.

2.3       Form

Bài 2. Tổng quan về Form


</////hết buổi 1

Phân biệt Solution và Project?


[A solution is a container for projects, and tracks dependencies between projects.]

[A solution is like a house, a project like a room. Each room provides a piece of functionality whereas the house, a container of rooms, provides the means to link the rooms together and organize them appropriately.]

[It doesn't help that Visual Studio seems to make things more confusing. "New Project" actually creates a new SOLUTION containing a project. "Open Project" actually opens a solution containing one (or many) project. (The file menu says "Open Project/Solution" but it really is opening solutions. There is no "Close Project" only "Close Solution" which is accurate.

So, in VS you are always working within a solution. Many solutions contain only one project and newer developers are likely to think of them as the same thing. However you can add other projects into a solution.]

Lab 2. Thực hiện thuần thục các thao tác sau: tạo project, lưu project/solution, đóng solution, mở lại project/solution, thêm project vào solution

Ngôn ngữ biên dịch (compiled language) là loại ngôn ngữ cần được dịch toàn bộ mã nguồn chương trình ra mã máy hoặc bytecode mới có thể thực thi được. Có đầu vào (chương trình) tường minh. Ví dụ: C#, C++, Java

Ngôn ngữ thông dịch (interpreted language) là loại ngôn ngữ khi nào thực thi mới dịch mã nguồn sang mã máy. Có đầu vào tường minh. Ví dụ: PHP, Python, JavaScript

Ngôn ngữ kịch bản (scripting language) là loại ngôn ngữ mà mã nguồn sẽ được thực thi từ đầu đến cuối như một “tờ kịch bản”, không có đầu vào tường minh. Ngôn ngữ kịch bản thuộc kiểu ngôn ngữ thông dịch. Ví dụ: JavaScript, PHP

Một số câu hỏi cần tìm hiểu:

Câu hỏi 5. Hàm static void main() để làm gì? Nó nằm ở tập tin nào trong một project?

Câu hỏi 6. Mối liên hệ giữa hai tập tin FormXYZ.Designer.cs và FormXYZ.cs là gì?

Câu hỏi 7. Cách lấy một thiết kế form từ nơi khác đưa vào project?

Câu hỏi 8. Thứ tự các hàm sẽ được chạy của một chương trình đơn giản?

Có thể định dạng và thiết lập các thuộc tính cho form và các control của nó bằng properties.

</////hết buổi 2



[1] https://en.wikipedia.org/wiki/Windows_Forms
[2] https://en.wikipedia.org/wiki/.NET_Framework_version_history



[1] https://tusach.thuvienkhoahoc.com/wiki/H%E1%BB%87_th%E1%BB%91ng_ph%C3%A2n_lo%E1%BA%A1i_c%C3%A1c_m%E1%BB%A5c_ti%C3%AAu_c%E1%BB%A7a_Bloom
[7] https://quantrimang.com/cac-phien-ban-ms-sql-server-145297
[8] https://sqlserverbuilds.blogspot.com/
[9] https://en.wikipedia.org/wiki/Microsoft_Visual_Studio
-----
Bài tiếp theo: Lập trình CSDL_02_Label Button Textbox
Xem thêm: Danh sách các bài học