Các chủ đề song song của cuộc sống và lập trình

Lập trình cung cấp những điểm tương đồng đáng kể cho cuộc sống. Chúng tôi được giao nhiệm vụ tạo ra thứ gì đó - thứ mà tổng của nó có ý nghĩa hơn các bộ phận. Giống như cuộc sống, nó là một thử thách của sự sáng tạo có giới hạn. Có những quy tắc chúng ta phải tuân theo, một số quy tắc chúng ta nên tuân theo và những quy tắc khác chúng ta có thể tự do bỏ qua. Lập trình cung cấp cho chúng ta một cái nhìn thoáng qua, dù có thể là phù du, về một số sự thật cơ bản về thế giới mà chúng ta đang sinh sống.

 

Bốn điểm tương đồng giữa lập trình và cuộc sống

 

Lặp lại là tiến trình.

Bạn có biết, nếu đầu tháng bạn bắt đầu với một xu duy nhất và tăng gấp đôi nó mỗi ngày, bạn sẽ có 163 đô la vào ngày 15 của tháng? Chắc chắn, bạn nghĩ rằng, phải có cách tốt hơn để kiếm 163 đô la trong 15 ngày. Nhưng, nếu bạn đợi thêm 15 ngày nữa, bạn sẽ có hơn 5 triệu đô la.

 

Tiếp tục đi, tôi sẽ đợi trong khi bạn làm toán.

 

Trong lập trình, chúng tôi sử dụng thuật ngữ lặp để chỉ việc lặp lại một cái gì đó. Theo một định nghĩa chính thức hơn, nó được áp dụng lặp lại một thủ tục cho kết quả trước đó của thủ tục đó. Ví dụ: thêm các số 1 và 1 để được 2, sau đó thêm 1 và 2 để được 3, v.v.

 

Khi chúng tôi lặp lại, chúng tôi tìm kiếm phản hồi. Chúng tôi chờ một số điều kiện được đáp ứng để chúng tôi có thể ngừng lặp lại hoặc điều chỉnh cách chúng tôi lặp lại. Nếu chúng ta không lắng nghe phản hồi đó, chúng ta có thể bị mắc kẹt trong một vòng lặp vô hạn.

 

Cuộc sống không có gì khác biệt. Chúng ta thường mong đợi mình có thể nhảy từ điểm A đến điểm B mà không bao giờ xác định điểm A hay điểm B là gì. Và, ngay cả khi chúng tôi xác định được những điểm đó, chúng tôi mong đợi một động thái ngay lập tức từ đầu đến cuối. Thay vào đó, điều thường là sự thật, là chúng ta phải từng bước thực hiện từ đầu đến cuối. Chúng tôi phải lắng nghe phản hồi cho chúng tôi biết vị trí của chúng tôi để chúng tôi có thể điều chỉnh.

 

Khi chúng ta có mục tiêu, sự tiến bộ thường có thể cảm nhận được – trong vài ngày, vài tuần hoặc thậm chí vài tháng đầu tiên – không tồn tại. Chúng ta thường bị lôi cuốn để bắt đầu lại hoặc bắt đầu mới. Nhưng khi làm như vậy, chúng ta không nhận ra, trong khi chúng ta có thể chưa đến đích, chúng ta đã ở đâu đó quá xa nơi chúng ta bắt đầu. Không cần khởi động lại hoàn toàn, chúng tôi chỉ cần thực hiện một số điều chỉnh nhỏ.

 

Ngừng bắt đầu lại. Hãy để sự lặp lại là động lực tạo ra sự tiến bộ.

 

Hầu hết các bài toán phức tạp là tập hợp các bài toán nhỏ hơn đã được giải.

Ngay cả những ứng dụng hấp dẫn nhất cũng là một loạt các giải pháp chủ yếu là trần tục cho các vấn đề trần tục. Trên thực tế, hầu hết các giải pháp được thực hiện trong một chương trình không có gì là duy nhất. Chính sự kết hợp của những giải pháp thông thường đó đã tạo nên một sản phẩm phi thường.

 

Trong lập trình, có nhiều cách khác nhau để sử dụng những giải pháp khá bình thường này. Một cách là thông qua một thuật ngữ gọi là trừu tượng. Tóm tắt một cái gì đó là chuyển một cái gì đó ra khỏi cái khác.

 

Trong lập trình máy tính, khi chúng ta trừu tượng hóa một thứ gì đó, chúng ta thường xây dựng công nghệ cấp cao hơn trên công nghệ cấp thấp hơn. Điều này giúp làm việc với các công nghệ cấp thấp hơn dễ dàng hơn.

 

Ví dụ, hầu hết các ngôn ngữ lập trình là sự trừu tượng của ngôn ngữ nhị phân bí ẩn (0s và 1s). Họ đặt một lớp giữa chúng ta và một số mức độ tương tác cơ bản hơn, nhưng cồng kềnh hơn với máy tính. Các ngôn ngữ cấp cao hơn này cho phép chúng tôi tập trung vào các vấn đề cấp cao hơn.

 

Một cách khác mà chúng ta có thể giải quyết vấn đề hiệu quả hơn là sử dụng giải pháp của người khác. Bạn cũng có thể đã nghe thuật ngữ thư viện. Và, mặc dù tôi không nói đến một địa điểm thiếu ánh sáng, bụi bặm và yên tĩnh nơi có sách, nhưng điều đó cũng không xa.

 

Thư viện, theo thuật ngữ lập trình, là đoạn mã mà người khác đã viết để giải quyết các vấn đề thông thường. Nó cũng loại bỏ những thứ không hoàn toàn cơ bản để giải quyết bất kỳ vấn đề nào bạn gặp phải.

 

Ví dụ: nếu bạn đang viết một chương trình yêu cầu ai đó đăng nhập để sử dụng ứng dụng của bạn, bạn có thể tự viết mã để mã hóa và giải mã mật khẩu hoặc, bạn có thể sử dụng mã do người khác viết để làm điều đó cho bạn. Với tùy chọn thứ hai, chúng tôi có thêm thời gian để tập trung vào các vấn đề quan trọng hơn mà ứng dụng của chúng tôi đang cố gắng giải quyết.

 

Tất cả chúng ta sử dụng trừu tượng và thư viện trong một số hình dạng hoặc hình thức. Ví dụ, cửa hàng tạp hóa là một bản tóm tắt của việc sản xuất thực phẩm của riêng chúng ta. Xe hơi là một khái niệm trừu tượng của việc đi bộ. Lò nướng là một sự trừu tượng của việc xây dựng một ngọn lửa. Đây là những lớp chúng tôi đặt trước mặt cho phép chúng tôi phân bổ thời gian cho các vấn đề cấp cao hơn.

 

Đổi mới bánh xe chỉ để học cách làm bánh xe, không phải lái xe đến cửa hàng.

 

Cách bạn xác định một vấn đề là cách bạn sẽ giải quyết nó.

Nhớ lại câu chuyện về một chiếc xe tải chạy dưới gầm cầu và bị kẹt. Các kỹ sư đã dành hàng giờ để tìm ra cách di chuyển cây cầu. Một đứa trẻ nhỏ đến, úp mặt vào lốp xe tải và nói, "Nếu bạn để không khí ra khỏi lốp thì sao?"

 

Từ vị trí thuận lợi của đứa trẻ, vấn đề không phải là cây cầu quá thấp mà là chiếc xe tải quá cao.

 

Hầu hết mọi người có thể giải quyết bất kỳ vấn đề nào. Trên thực tế, hầu hết các vấn đề đều nêu giải pháp. Ví dụ, nếu cây cầu gây ra vấn đề, câu trả lời là làm gì đó với cây cầu. Tuy nhiên, nếu vấn đề là xe tải quá cao, thì giải pháp - gần như rõ ràng - là làm cho xe tải thấp hơn.

 

Việc sắp xếp các bộ phận quan trọng hơn nhiều so với chính các bộ phận đó.

Cơ sở mã của Google Maps, Tuyên ngôn Độc lập, Bài phát biểu trong mơ của Martin Luther King Jr., bài diễn văn khai giảng năm 2005 của Steve Jobs và ứng dụng đầu tiên của tôi, Hello, World có điểm gì chung?

 

Quyền truy cập vào 26 chữ cái giống nhau của bảng chữ cái tiếng Anh.

 

Có rất ít điều hấp dẫn tôi hơn là chữ viết. Chữ viết là một trong những công nghệ mạnh mẽ nhất xuất hiện từ con người.

 

Đúng, tôi sử dụng thuật ngữ công nghệ bởi vì - thậm chí được khắc vào tường của một hang động - về cơ bản nó đã thay đổi cách chúng ta duy trì thông tin. Dữ liệu không còn bị ràng buộc trong ranh giới của tâm trí chúng ta.

 

Mặc dù mục đích của chữ viết ban đầu được liên kết với việc lưu trữ hồ sơ, nhưng nó nhanh chóng trở thành một cách để truyền bá ý tưởng. Một số ý tưởng này sẽ khiến bạn tức giận, và những ý tưởng khác lại truyền cảm hứng.

 

Mọi ngôn ngữ (bao gồm cả ngôn ngữ máy tính) đều có sự tinh tế khi truyền tải thông tin qua văn bản hoặc lời nói. Các từ và các bộ phận cấu thành của chúng có thể hơi khác nhau. Tuy nhiên, một ngôn ngữ là một tập hợp các ký hiệu có thể được sắp xếp thành những thứ dường như là vô số ý tưởng.

 

Ví dụ, bằng tiếng Anh, có khoảng 29 ký hiệu mà tôi có thể sử dụng để đại diện cho gần như toàn bộ vũ trụ của mình. Tôi đã đề cập đến 26 chữ cái, nhưng cũng hữu ích nếu có quyền truy cập vào dấu chấm, dấu phẩy và dấu chấm hỏi.

 

29 nhân vật đó dành cho bạn, tôi và Steve Jobs. Tuy nhiên, mỗi chúng ta, trong suốt cuộc đời của mình, sẽ đi theo những quỹ đạo khác nhau dựa trên sự kết hợp của các chữ cái mà chúng ta đã chọn để tin và nói vào sự tồn tại.

 

Điều thú vị là mặc dù chúng tôi thường thêm từ vào từ điển nhưng chúng tôi không thường thêm các chữ cái. Điều này có nghĩa là, ở cấp độ cơ bản nhất, tất cả những ý tưởng có thể tồn tại, đều đã tồn tại, với các bộ phận cấu thành của chúng lặng lẽ chờ đợi chúng ta trộn chúng vào sự tồn tại.

 

Les Brown đã tổng kết tốt với thử nghiệm suy nghĩ này:

 

Hãy tưởng tượng nếu bạn sẽ, đang trong quan tài. Và đứng xung quanh quan tài của bạn là bóng ma của những ý tưởng, ước mơ, khả năng, tài năng mà cuộc sống ban tặng cho bạn.

 

Và bạn, vì bất cứ lý do nào đấy đã  không hành động theo những ý tưởng đó. Bạn chưa bao giờ theo đuổi ước mơ đó. Bạn chưa bao giờ sử dụng những tài năng đó. Chúng tôi chưa bao giờ thấy sự lãnh đạo của bạn. Bạn chưa bao giờ sử dụng giọng nói của mình. Bạn chưa bao giờ viết cuốn sách đó.

 

Và chúng đang ở đó, đứng xung quanh quan tài  của bạn, nhìn bạn với đôi mắt to đầy giận dữ và nói: “Chúng tôi đến với bạn. Và chỉ có bạn mới có thể cho chúng tôi cuộc sống! Bây giờ chúng tôi phải chết với bạn mãi mãi ”.

 

Câu hỏi đặt ra là - nếu bạn chết hôm nay - ý tưởng nào, ước mơ gì, khả năng gì, tài năng gì, món quà nào, sẽ chết theo bạn?

 

Cảm ơn bạn đã đọc!