Bạn có thể cải thiện kỹ năng lập trình của mình bằng cách học các mô hình ngôn ngữ khác không?


9

Nếu vậy, bạn có thể cho tôi biết cách học một mô hình mới đã thay đổi cách tiếp cận của bạn để giải quyết các vấn đề lập trình ngay cả khi vấn đề nằm ở một mô hình / ngôn ngữ / công nghệ khác?

Tôi sẽ thực sự đánh giá cao Nếu bạn có thể nói với tôi một cách cụ thể, làm thế nào các kỹ năng lập trình X (tức là: JAVA / C # / C ++) của bạn được cải thiện bằng cách học Y (tức là: Scheme / Prolog / Lisp).

Ngoài ra, những mô hình nào bạn đề nghị giúp nhiều nhất để trở thành một lập trình viên giỏi?

Kinh nghiệm của tôi chỉ có cấu trúc - OOP, bắt buộc - thủ tục và trong một số mức độ lập trình meta mẫu, nhưng mục tiêu của tôi không phải là học ngôn ngữ khác, mà là học các cách tiếp cận khác nhau để giải quyết vấn đề.

Cảm ơn!


1
Tôi tin rằng các câu trả lời cho điều này sẽ là một hình thức của một tiếng vang .
R0MANARMY

Câu trả lời:


7

Tôi cố gắng học ít nhất 1-2 ngôn ngữ mới mỗi năm. Điều tôi đạt được nhiều nhất là từ việc học một ngôn ngữ chức năng (F #) đã thay đổi cách tôi nhìn giải quyết vấn đề - Tôi = bây giờ tôi cố gắng nói cho máy biết phải làm gì thay vì làm thế nào, đặc biệt là trong C # nơi tôi sử dụng Linq rất nhiều và các đối tượng bất biến bây giờ tôi biết lợi ích của việc sử dụng chúng. Tôi cũng sử dụng các hàm bậc cao hơn khá nhiều (phương thức làm tham số), kết quả là kiểu mã hóa của tôi đã thay đổi (được cải thiện).


1
Ditto cho lập trình Python của tôi. Tôi đã thất bại thảm hại khi viết tất cả mã tạo cây và phân tích cú pháp cây đó một cách chắc chắn nếu tôi không học được các kỹ thuật mà tôi đã sử dụng (cây khá nhiều ngụ ý đệ quy hoặc phiên bản cuộn bằng tay, trình tạo trình phân tích cú pháp bao gồm về các hàm bậc cao hơn và được lấy cảm hứng từ các tổ hợp trình phân tích cú pháp, v.v.) bằng cách học Haskell.

Cảm ơn, bạn đã xác nhận lại những gì tôi đã nghi ngờ ... Cảm ơn lần nữa!
Armando

2

Chắc chắn rồi. Mỗi ngôn ngữ lập trình bạn học sẽ có một cách làm việc khác nhau. Một số thứ sẽ khiến bạn phát điên, một số thứ bạn sẽ yêu thích và những thứ khác sẽ dần dần phát triển trên bạn.

Không bao giờ lãng phí thời gian để học ít nhất những điều cơ bản của một ngôn ngữ mới.


1

Ok, đây là một ví dụ tôi đã gặp.

Tôi đã học một ngôn ngữ tương đối cũ (VB6) cho một dự án về một số mã cũ mà chúng tôi có.
Ngôn ngữ được định hướng theo cửa sổ nhưng không có nhiều lớp mạnh mẽ cấp cao như chúng ta có trong khung .Net.

Tôi đã phải thực hiện một số thao tác hình ảnh và điều đó đã giới thiệu cho tôi các chức năng API của windows cho các thao tác hình ảnh.

Sau khi tôi biết rằng nó đã cho tôi hiểu rõ hơn về các lớp GDI của .Net. Và sự hiểu biết rằng đôi khi sử dụng API windows sẽ nhanh hơn nhiều (gói chức năng ít hơn).

Vì vậy, điều đó cho thấy rằng ngay cả khi bạn học mã cũ, bạn vẫn có thể học và có được một góc nhìn khác.


1

Bạn có thể cải thiện kỹ năng lập trình của mình bằng cách học các mô hình ngôn ngữ khác không?

Theo kinh nghiệm của tôi, chắc chắn là có. Có một số cách khác nhau để tấn công một vấn đề giống như một bảng công cụ. Một ngày nào đó bạn (như tôi đã làm) sẽ sử dụng cho các công cụ khác này. Hoặc có thể không. Tất cả phụ thuộc vào. Một số ngoại lệ:

Ngôn ngữ nói chung không đứng một mình, chúng đi kèm với một môi trường. Tôi đã dành một chút thời gian để học một ngôn ngữ kỳ lạ được gọi là awk . Nó dựa vào khớp mẫu bằng cách sử dụng "biểu thức chính quy". Từ việc cố gắng học C ++ STL (không thành công lắm) tôi đã học về bản đồ. Kết hợp hai khái niệm này, tôi có thể nhanh chóng viết một số tiện ích chuyển đổi văn bản trong Pearl (ngôn ngữ duy nhất có sẵn trên biểu đồ).

Chủ yếu là để giải trí, tôi đã cố gắng học Erlang (không thành công lắm). Nó có một thư viện các chức năng được gọi là OTP triển khai trong số những thứ khác một cách xử lý lỗi, đôi khi được gọi là để nó bị lỗi và có một màn hình khởi động lại các chức năng. Tôi đã sử dụng ý tưởng này trong một số lĩnh vực, đôi khi chỉ đơn giản là để mọi thứ thất bại thay vì thực hiện các bài kiểm tra vô tận.

Cố gắng học Haskell (một lần nữa không thành công lắm) đã thực sự mở rộng tầm mắt của tôi đối với các cách tấn công khác. Lập trình chức năng sắp xếp (theo suy nghĩ của tôi) bắt đầu bằng việc viết mã cho biết kết quả bạn muốn, không phải là viết các bước liên quan đến việc đạt được điều đó. Tôi thấy rằng điều này thực sự giúp tôi viết mã SQL tốt hơn.

Gần đây, tôi đã thử một chút javascript. Và tìm thấy một môi trường được gọi là gật đầu. Không có mã cần thiết để tạo một máy chủ tự động hóa nhà nhỏ.

Để đặt nó trong viễn cảnh, hầu hết sự say mê của tôi trong các ngôn ngữ khác nhau là (và) trên một con đê khá nông chủ yếu để cảm nhận về những gì mọi người đang nói về. Có rất ít ngôn ngữ tôi thực sự có thể làm việc hiệu quả.


0

Tôi cũng đã học được rất nhiều từ việc học một ngôn ngữ chức năng trong một thời gian. Tuy nhiên, những gì tôi lấy từ nó ít hơn là làm những việc khác với các ngôn ngữ bắt buộc nhiều như làm thế nào để làm cho sự tương tranh dễ dàng hơn. Nó có thể được áp dụng dễ dàng trong một ngôn ngữ mệnh lệnh như trong một ngôn ngữ chức năng, nhưng vì một số lý do, hầu hết các ví dụ tôi gặp trong các ngôn ngữ mệnh lệnh phức tạp hơn. (Những thứ khác hóa ra phức tạp hơn trong các ngôn ngữ chức năng.)

Một điều khác tôi học được từ một ngôn ngữ mới là các mẫu lập trình bổ sung. Tôi đã đọc về nhiều người trong số họ, nhưng nhìn thấy và sử dụng một số triển khai thực sự tốt của họ làm cho nó dễ hiểu hơn và thực sự lái xe về sự hữu ích của họ và khi chúng phù hợp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.