Tìm kiếm Blog nà


Breaking News
Showing posts with label Định Hướng. Show all posts
Showing posts with label Định Hướng. Show all posts

Friday, August 12, 2016

[Chia sẻ] Lập trình và những điều cần biết

      Photo: amazonaws
Mình làm bài viết này để chia sẻ đến các bạn chuẩn bị bước vào con đường sự nghiệp của lập trình viên, nhưng hiện tại bạn không biết bắt đầu từ đâu? Những câu hỏi thường gặp là:
  • Tôi phải học ngôn ngữ gì đầu tiên ?
  • Học một lúc nhiều ngôn ngữ được không ?
  • Làm sao để trở thành một lập trình viên giỏi ?
Ở bài viết này, mình sẽ giải đáp thắc mắc các câu hỏi trên.
  • Tôi phải học ngôn ngữ gì đầu tiên ?
Bạn phải chọn một ngôn ngữ lập trình mà bạn nghĩ rằng sự nghiệp của mình về cơ bản sẽ xoay quanh nó. Nếu bạn yêu thích lập trình Web, bạn có thể chọn PHP là nền tảng. Hoặc nếu bạn yêu thích lập trình di động trên hệ điều hành Android, bạn nên tìm hiểu Java trước khi bước vào Android ( vì Android được dựa trên nền tảng Java ). Khi xác định rõ hướng đi trong sự nghiệp của mình, thì bạn hãy chọn một loại ngôn ngữ cơ bản gắn liền với chúng.
Một khi bạn đã xác định rõ về ngôn ngữ mình chọn thì hãy tìm hiểu thật sâu về nó, vốn dĩ nó là cơ bản cũng như nền tảng cho bạn. Khi nghiên cứu tài nguyên, bạn đừng nên tìm hiểu những thứ cao siêu mà hãy bắt đầu với những tài liệu dành cho người mới bắt đầu. Học phải đi đôi với hành, cách học lập trình tốt nhất mà mình đã áp dụng là vừa xem tài liệu vừa thực tập code trên máy tính, nó sẽ giúp bạn nhớ lâu hơn. Khi bạn đang viết code, hãy chắc chắn rằng bạn hiểu được bản chất mà tất cả các dòng code bạn viết ra và làm tương tư khi bạn đọc nó, nếu không hiểu hãy làm lại và tìm ra được bản chất của nó, dành thời gian tìm hiểu để tránh bị hỏng kiến thức sau này.
Bạn sẽ không tiếp thu khi chỉ thực hành chúng 1 lần, hãy chuẩn bị tư tưởng đối đầu ít nhất 3 đến 4 lần thì bạn mới nhớ và nắm vững được chúng. Trừ khi bạn là thiên tài thì có thể nhớ hết sau một lần viết code.
Mình sẽ liệt kê một số ngôn ngữ lập trình phổ biến và có triển vọng trong tương lai :
1.Ngôn ngữ lập trình Java
Java hiện tại đang dẫn đầu bảng xếp hạng về các ngôn ngữ lập trình phổ biến và rộng rãi trên thế giới. Nó là trung tâm của mọi nhà phát triển ( trừ Microsoft ). Java có nguồn gốc từ C, C++ nhưng nó tỏ ra riêng biệt và hướng tới những đối tượng cơ bản. Java chủ yếu viết được game, application, và các chức năng web. Java còn là nền tảng chính để hình thành và phát triển hệ điều hành Android ( một trong những hệ điều hành di động phổ biến nhất hiện nay do Google phát triển ).
2. Ngôn ngữ lập trình C 
Ngôn ngữ lập trình C được xem như là tổ tiên của các loại ngôn ngữ lập trình, là một trong những ngôn ngữ được sử dụng rộng rãi nhất mọi thời đại. Học C rất quan trọng, nó là nền tảng và khi bạn thành thạo, sẽ rất dễ dàng tiếp thu các ngôn ngữ khác như C# và Java, vì chúng có những câu lệnh tương đương nhau.
C là ngôn ngữ lập trình cơ bản cho người mới bắt đầu làm quen và nó giúp bạn dễ dàng tiếp cận hơn với các ngôn ngữ khác.
3. Ngôn ngữ lập trình PHP
Nếu bạn muốn nghiên cứu về lập trình Web thì PHP là sự lựa chọn hoàn hảo vì nó dễ dàng nhúng vào các trang HTML, vì hiện tại Adobe Flash Player sắp bị khai tử. PHP là ngôn ngữ với mã nguồn mở, do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java. Hiện tại PHP đã cập nhật tới phiên bản PHP 7, là ngôn ngữ tương lai khi sự phát triển và phổ biến của web hiện nay.
4. Swift
Đây là ngôn ngữ được phát triển bởi Apple trên nền tảng hệ điều hành iOS và OSX, nhà phát triển hệ điều hành của Apple cho rằng: Swift là ngôn ngữ của tương lai trong vòng 20 năm tới, nó sẽ thay thế người tiền nhiệm Objective-C đã làm rất tốt trong quá khứ. Bằng chứng là đầu tháng 12 này, Swift đã trở thành ngôn ngữ với mã nguồn mở, có thể dùng để phát triển ứng dụng Android bằng ngôn ngữ Swift, đây là một mơ ước thành hiện thực của các lập trình viên.
Chris Lattner – người sáng lập ra Swift, cho biết ngôn ngữ này được Apple phát triển từ năm 2010, nhưng mãi đến 2014 thì mới công bố chính thức. Đây là ngôn ngữ được cho là thỏa lòng mong ước của Steve Jobs, khi đối tượng mà ông muốn hướng tới không chỉ riêng lập trình viên, mà là tất cả mọi người đều có thể lập trình bằng ngôn ngữ Swift, kể cả một học sinh cấp 3.
  • Học một lúc nhiều ngôn ngữ được không ?
Điều này là không nên. Trước khi có thể chạy, thì chúng ta phải tập đi trước đã, bằng việc hãy học một ngôn ngữ lập trình cơ bản như mình đã nói ở trên. Đừng chạy theo xu hướng kiểu là ” ngôn ngữ này đang hot ” , ” ngôn ngữ này dễ kiếm tiền “, rồi sau bao ngày chạy theo chúng, chúng ta nhận được gì, khi nhìn lại không nắm được ngôn ngữ nào ra ngô ra khoai. Hãy cân nhắc thật kỹ trước khi lựa chọn.
  • Làm sao để trở thành một lập trình viên giỏi ?
Dạo gần đây có rất nhiều bạn thắc mắc với câu hỏi trên, vậy mình sẽ hỏi các bạn là : ” Bạn sẽ no khi bạn không ăn ?” . Hai câu hỏi hoàn toàn không ăn nhập gì nhưng xét về nghĩa bóng thì như nhau. Lập trình phải xuất phát từ đam mê, là cả một quá trình khổ luyện, viết mỏi cả tay – ngồi mòn cả ghế. Bạn hãy thực hành, làm bài tập thật nhiều và tiếp xúc với những dự án mang tính chất deadline thì khả năng lập trình của bạn sẽ được nâng cao. Muốn trở thành một lập trình viên giỏi thật sự không khó, cái khó là trong mỗi chúng ta có kiên trì và đam mê hay không. Vì tương lai nằm trong tay bạn.
Gramy đang hướng dẫn 2 ngôn ngữ lập trình di động nên 2 nền tảng Swift và Android. Nếu các bạn quan tâm hãy theo dõi bài viết của chúng tôi nhé.
Nguồn: Techtalk
Read more ...

Sunday, August 7, 2016

Bước chân vào nghề lập trình bắt đầu từ đâu ?

Programming Languages
Programming Languages
Hiện tôi đang là một sinh viên ĐH vì thế tôi sẽ kể cho bạn nghe về con đường mà tôi đang đi, người ta nói mỗi cây mỗi hoa mỗi nhà mỗi cảnh. Nếu thấy phù hợp thì hãy áp dụng theo cách mà tôi kể nhé.
Talk with code by PCbots
Talk with code by PCbots
Hồi nhỏ ước mơ của tôi là chế tạo ra những con robot nó thiên về phần cứng hơn chứ không phải là lập trình.Bạn biết không, tôi đến với ngành công nghệ thông tin chỉ với 3 ngày quyết định của bản thân và gia đình thôi đấy. Hồ sơ thì DH của tôi gồm 2 trường với chuyên ngành Kĩ Thuật Cơ Điện Tử. Đến với CNTT cũng có thể coi là một quyết định táo bạo và bất ngờ đối với bản thân tôi và gia đình. Tôi còn nhớ như in cái cảm giác đã đậu được 2 trường ĐH kia nhưng lại quyết định bỏ và chờ thi vào trường DH mà tôi đang theo học, DH FPT.
Vì sao tôi vào FPT ư, câu chuyện cũng khá dài nhưng để ngắn gọn thì đam mê của tôi bắt đầu từ máy tính. Trong suốt những năm học phổ thông tôi suốt ngày cặm cụi hí hoáy bên chiếc máy tính, ngày thi môn đầu tiên của trường DH thứ 2, ba tôi quyết định sẽ cho tôi đi theo ngành CNTT ở DH FPT. Có lẽ ba tôi biết rằng tôi sẽ thích hơp hơn với ngành này. Mỗi ngày ba đều thấy tôi bên máy tính cơ mà. Vậy đó, đầu tiên bạn cần thích nó.
Trước khi theo đuổi ngành học của mình, tức thời trung học tôi đã có một nền kiến thức khá vững về lập trình. Đối với tôi, lập trình là câu chuyện giải quyết bài toán theo cách nào thôi vì thường có rất nhiều cách. Còn việc bạn ngồi gõ code c#, Java, Php …thì chả cần quan tâm đâu. Thích học ngôn ngữ nào thì cứ học ngôn ngữ đó, nhưng tôi khuyên bạn nên bắt đầu với một ngôn ngữ lập trình như C, đây thực sự là một ngôn ngữ tuyệt vời để bạn đến với thế giới lập trình. Như đã nói, ngồi gõ code chỉ là một chuyện tầm thường thôi, chả đáng quan tâm đâu, cái quan trọng là bạn cần biết để giải quyết một vấn đề cần làm những gì, làm như thế nào để có một hiệu quả cao nhất có thể. Ngôn ngữ C đem đến những điều tuyệt vời đó cho bạn. C rất mạnh mẽ, bạn làm được rất nhiều điều với nó, lập trình C cho hệ thống nhúng, ứng dụng, kernel cho linux, ứng dụng trên Windows bạn đều có thể viết bằng ngôn ngữ C.
progLanguages
progLanguages
Bạn nên hạn chế việc tiếp cận từ đầu với các ngôn ngữ hướng đối tượng kiểu như Java khi chưa có một nền tảng lập trình tốt với C hoặc các ngôn ngữ như Pascal trước đó. Vì sao ư, với các ngôn ngữ lập trình hướng đối tượng OOP thì nó cung cấp cho bạn rất nhiều các thư viện, packet có sẵn để giải quyết bài toán. C không cho bạn điều đó, để làm việc trong c bạn cần viết các function, vì thế bạn sẽ hiểu rất rõ bản chất của vấn đề mà mình đang làm. Bỏ qua Java ta nói đến PHP và C một chút. Trong PHP việc đọc một chuỗi và lấy dữ liệu theo dạng cấu trúc có sẵn rất dễ dàng qua hàm premath nhưng trong C tôi cá là bạn phải đổ mồ hôi ròng ròng khi phải làm điều đó đấy. Hãy bắt đầu với C
Nãy giờ tôi quên mất là bạn cần phải biết, học các thuật giải trước khi đụng đến Code. Điển hinh là bài toán sắp xếp trong lập trình. Hiện tại giải thuật Quick sort là giải thuật tốt nhất, tốn ít phép toán hơn các giải thuật khác. Sau đây là danh sách các giải thuật tìm kiếm, bạn có thể tìm nó trên Google.
  1. Bubble sort.
  2. Quick sort.
  3. Simple selection sort.
  4. Heap sort.
  5. Simple insertion sort.
  6. Shell sort.
  7. Merge sort.
To be continue…
Nguồn: Gramy
Read more ...

Thursday, August 4, 2016

Đặt mục tiêu: SMARTER

Đặt mục tiêu đúng là một việc rất quan trọng bởi mục tiêu định hướng công việc chúng ta làm. Có lẽ tôi không cần phải nói nhiều hơn về điều này. Đặt mục tiêu một cách khoa học quan trọng hơn rất nhiều. Theo nghiên cứu của ĐH Scranton, chỉ 8% những người được khảo sát đạt được mục tiêu trong năm 2014 của mình, đa phần thất bại do không đặt được mục tiêu một cách khoa học.
Một phương pháp đặt mục tiêu khoa học được giới thiệu từ những năm 1980 là SMART, nhưng hiện nay cũng không hẳn nhiều người biết hoặc áp dụng thành công. Tôi chỉ giới thiệu sơ qua về phương pháp này, bởi bạn có thể tìm thấy rất nhiều bài học về SMART thông qua Internet.
Phương pháp đặt mục tiêu SMART dựa trên 5 yếu tố tạo nên từ này: S.M.A.R.T = Specific, Measurable, Achievable, Relevant, Time-Bound.
  • Specific (Cụ thể): Nếu mục tiêu mông lung, làm sao chúng ta biết phải làm gì? WHAT.
  • Measurable (Đo được): Nếu mục tiêu không đo được, làm sao chúng ta biết khi nào mình đã đạt được? WHERE.
  • Achievable (Khả thi): Nếu mục tiêu không khả thi, làm sao chúng ta thực hiện? HOW.
  • Relevant (Liên quan): Nếu mục tiêu không có sự liên quan (tới cuộc sống, những mục tiêu khác), chúng ta đạt mục tiêu có ý nghĩa gì? WHY.
  • Time-Bound (Có thời hạn): Nếu mục tiêu không giới hạn thời gian, khi nào nó được đánh giá?WHEN.
Ví dụ, mục tiêu “năm nay kiếm được nhiều tiền” không khoa học. Thế nào là nhiều (measurable)? 1 tỷ USD là nhiều (achievable)? Tiền để làm gì (relevant)?
Một mục tiêu tốt hơn là “để phục vụ cho công việc (relevant), năm nay (time-bound) kiếm được thêm 50 triệu (measurable) để mua laptop mới (specific) nhờ việc bán hàng online (achievable)”. Yếu tố achievable là khó nhất, nếu chúng ta đã có kỹ năng bán hàng online tốt, đã có vốn thì mục tiêu này khả thi. Ngược lại, mục tiêu không khả thi.
Gần đây, một phát triển mới từ phương pháp S.M.A.R.T là S.M.A.R.T.E.R, được thêm vào 2 yếu tố nữaE.R. Có nhiều biến thể của phương pháp này, nhưng phiên bản tôi thấy thích nhất là E.R = Evaluate, Re-Adjust.
  • Evaluate (Đánh giá): Một mục tiêu khoa học cần có trong đó khả năng đánh giá được qua từng giai đoạn hoặc tiến trình đạt được mục tiêu.
  • Re-Adjust (Điều chỉnh): Trong quá trình thực hiện, nếu mục tiêu đã lỗi thời hoặc cách tiếp cận của chúng ta không còn đúng, mục tiêu ngay lập tức được điều chỉnh lại cho phù hợp với tình hình hiện tại.
Ví dụ, với mục tiêu chúng ta đã có theo S.M.A.R.T ở trên, có thể bổ xung như sau “để phục vụ cho công việc (relevant), năm nay (time-bound) kiếm được thêm 50 triệu (measurable) theo từng tháng (evaluate) để mua laptop mới (specific) nhờ việc bán hàng online (achievable)”. Như vậy, cứ sau mỗi tháng, chúng ta lại đánh giá lại quá trình đạt được mục tiêu. Nếu đến tháng 5, chúng ta chỉ kiếm được 10 triệu thì cần phải điều chỉnh lại mục tiêu hoặc cách làm. Cũng có thể, đến tháng 5 chúng ta vẫn chưa phải điều chỉnh gì với mục tiêu là “để phục vụ cho công việc (relevant), năm nay (time-bound) kiếm được thêm 50 triệu (measurable), tập trung vào tháng 6,7 (Euro 2016) để mua laptop mới (specific) nhờ việc bán hàng online (achievable)”. Cũng có thể, tháng 4, chúng ta trúng xổ số 100 triệu, thì mục tiêu cũng đã lỗi thời, có thể nên loại bỏ (mục tiêu “kiếm thêm 50 triệu mua laptop” đã hoàn thành, nhưng nếu chúng ta đặt mục tiêu“kiếm thêm 50 triệu mua laptop và thử sức trong lĩnh vực kinh doanh” thì việc trúng xổ số có rất ít liên quan để mục tiêu này bị loại bỏ).
Tóm lại S.M.A.R.T.E.R = Specific, Measurable, Achievable, Relevant, Time-Bound, Evaluate, Re-Adjust
Xin nói thêm lý do khiến tôi thích phiên bản S.M.A.R.T.E.R này vì nó rất “agile”: chúng ta luôn phải đánh giá và điều chỉnh liên tục để có cách làm phù hợp nhất, nhằm hoàn thành phần công việc có giá trị nhất giúp đạt được mục tiêu có ý nghĩa nhất. Dù vậy, có thể bạn cho rằng yếu tố Evaluate và Re-Adjust gắn với quá trình thực hiện mục tiêu, không gắn với việc xây dựng mục tiêu ban đầu. Nhưng mục tiêu đặt ra là để đạt được và có ý nghĩa, đâu phải chỉ để “đặt ra”, phải không? Hơn nữa, qua ví dụ trên bạn cũng thấy yếu tố Evaluate hoàn toàn có thể được đặt ra ngay trong lúc xây dựng mục tiêu.
Tuy vậy, vẫn còn nhiều phương pháp S.M.A.R.T.E.R khác có thể phù hợp hơn với bạn. Bạn có thể tham khảo thêm tại:
Nguyễn Hiển – gurunh.com
Read more ...
Designed By hoclaptrinhcanban