Điều gì thúc đẩy việc áp dụng, hoặc không, của các ngôn ngữ lập trình mới? [đóng cửa]


12

Tôi thực sự muốn tập trung vào lý do tại sao một số ngôn ngữ lập trình mới được sử dụng trong dòng chính, và những ngôn ngữ khác vẫn còn tương đối thích hợp. Tôi muốn biết về những thứ như trường hợp sử dụng cụ thể, khả năng tương thích ngược hoặc một số tính năng mới, khó thực hiện đơn giản hoặc phức tạp. Các ví dụ cụ thể sẽ được đánh giá cao, nhưng chúng ta đừng bị cuốn theo định nghĩa chính xác của "chính thống" hay "thích hợp" ở đây.



2
Cơ hội và sự ủng hộ của công ty là một yếu tố lớn. steve-yegge.blogspot.com/2007/02/next-big-lingu.html
Công việc

3
Không phải là một câu hỏi phù hợp cho diễn đàn này
Ryan

Vâng, đối với một đây không phải là một diễn đàn. Và đối với hai người, tôi nghĩ rằng điều này khá đáp ứng các hướng dẫn cho một câu hỏi chủ quan.
DeadMG

1
Việc áp dụng ngôn ngữ lập trình có liên quan nghịch với số lượng hipster sử dụng nó.

Câu trả lời:


18

Nếu bất cứ ai thực sự biết, họ sẽ là những người rất giàu có.

Điều đó nói rằng, đây là dự đoán của tôi:

khả dụng

BASIC là một ngôn ngữ nhỏ khủng khiếp đi kèm với (tất cả?) PC khi chúng lần đầu tiên ra mắt. Cả Apple II (máy tính mặc định cho nhiều trường trung học) và ATari 400/800 (máy tính gia đình siêu rẻ đầu tiên) đều đi kèm với BASIC.

Nếu bạn có máy UNIX (hệ thống AT & T V hoặc Berkeley), bạn có C. Nếu bạn muốn lập trình máy, đó là những gì bạn phải sử dụng.

EDIT : Với sự ra đời và có mặt của 'mạng, yêu cầu này chuyển thành:

  1. Có bao nhiêu bản phân phối Linux đóng gói một bản sao gần đây và làm thế nào để chúng cập nhật nó? Các thư viện của bên thứ ba có sẵn để cài đặt không?
  2. Có dễ dàng cài đặt trong Windows (XP | Vista | 7,8 ...) không?
  3. Các nền tảng Mac / iOS có được bảo hiểm không?
  4. Nó có thể được cài đặt mà không gây phiền toái cho Unix kế thừa không?
  5. Và sau khi cài đặt, việc truy cập thư viện của bên thứ ba dễ dàng như thế nào và có thể nâng cấp dễ dàng không?

Dễ chuyển đổi

Java là một ví dụ tốt ở đây. Nếu bạn biết lập trình C, Java không phải là một bước tiến rất xa, và nó đã cung cấp nhiều tính năng mà C thiếu và C ++ không cung cấp sạch.

C ++ vì những lý do rõ ràng là một bước tiến dễ dàng từ C và thật dễ dàng để bán cho ban quản lý như một "cải tiến" C. C ++ có thêm lợi ích là tương thích ngược với phần lớn cơ sở mã C kế thừa hiện có.

Perl là sự kết hợp của C, awk, sed và các tiện ích Unix khác trong một gói. Trước khi xuất hiện, hầu hết quản trị hệ thống đã được thực hiện thông qua các tập lệnh shell dán mọi thứ lại với nhau theo cách không đạt yêu cầu. Mang mọi thứ theo một quy trình với các cấu trúc dữ liệu và kiểm soát ngôn ngữ giống như C là một ơn trời.

Đáp ứng nhu cầu

C cất cánh vì nó cho phép bạn tạo ra hiệu quả lắp ráp gần mà không bị sa lầy vào thế giới lắp ráp cụ thể, khó bảo trì.

FORTRAN đã cất cánh vì nó cho phép dễ dàng dịch các ý tưởng toán học thành mã mà không bị lạc trong các chi tiết của máy.

Tương tự như vậy đối với LISP và thao tác tượng trưng.

Python phát triển do nhu cầu về một Perl "tốt hơn". (Tôi thiên vị ở đây, vì vậy tôi sẽ không nói nhiều hơn.)

PHP về cơ bản là BASIC cho web - nó được cài đặt mặc định trên nhiều máy chủ web và thật dễ dàng để hack một cái gì đó hữu ích một cách nhanh chóng.

Vận động chính sách, cơ sở người dùng, mã đóng góp

Hãy đối mặt với nó, Haskell sẽ không trở nên phổ biến như ngôn ngữ không sản xuất nếu nó không dành cho sự ủng hộ không mệt mỏi của các nhà phát triển và cơ sở người dùng.

Nhiều ngôn ngữ có sự sùng bái cá tính đằng sau (những) người tạo ra ngôn ngữ và tất cả chúng ta đều biết họ là ai.

FORTRAN có bộ mã toán học được thiết lập và hiệu đính rất lớn; tương tự cho Java và các hệ thống tích hợp web / hệ thống / MVC; tương tự cho Perl và CPAN; tương tự cho T E X và quản lý tài liệu; Vân vân.

Các Yếu tố

Vì một số lý do, một số ngôn ngữ dường như có số lượng mới phù hợp , đủ để gật đầu với cái , với một cách làm cho nó có vẻ dễ dàng hoặc cần thiết. Đó là, nó làm cho trường hợp riêng của nó. Và ai biết làm thế nào điều này xảy ra?


Dù sao, đó là dự đoán tốt nhất của tôi tại sao một số người làm cho nó. Về lý do tại sao một số người không ... tốt, nếu họ không đáp ứng các tiêu chí trên, đó có thể là lý do tại sao họ thất bại.


1
Yếu tố quyết định trong hầu hết các tiêu chí của bạn là sự ủng hộ của công ty . Java có thể đã ghi điểm, ví dụ, dễ dàng chuyển đổi, nhưng không có ai sẵn sàng thổi hàng triệu đô vào đó, hết năm này đến năm khác, như một phần của kế hoạch thống trị thế giới của họ, không rõ điều gì sẽ tạo ra sự khác biệt. Vì vậy, bạn đã đúng, những người rất giàu có biết câu trả lời cho điều này :-)
jaybee

4
@jaybee - không chắc chắn rằng sự hỗ trợ của công ty bởi những người sáng tạo ngôn ngữ nhất thiết phải giúp đỡ. Fortran và C không được giúp đỡ đặc biệt bằng cách đến từ IBM / ATT. Liên kết Oracle dường như đang tích cực gây hại cho Java. Basic, Perl, Python, Ruby, v.v ... đều không có tập đoàn nào đứng sau chúng. Hỗ trợ công ty nội bộ tại người dùng / khách hàng rất quan trọng nhưng điều đó diễn ra rất lâu sau khi nó trở nên phổ biến.
Martin Beckett

1
@Martin Beckett: bạn có thể có một điểm. Mặc dù tôi nghĩ rằng mặc dù tất cả các loại hành tinh có thể cần được sắp xếp theo ngôn ngữ để đi đến khối lượng quan trọng, nhưng cách "hiện đại" để đánh lừa những hành tinh đó thành dòng dường như là đốt tiền mặt. Ví dụ: Mark sử dụng Haskell làm ví dụ - nó có thể có một cơ sở người dùng tuyệt vời, có tiếng nói nhưng GHC giành được rất nhiều tranh luận cho họ. Trình biên dịch như GHC tốn tiền.
jaybee

@jaybee - Có rất nhiều may mắn. Nhưng đối với các ngôn ngữ web mới thú vị, đó có thể là kỹ năng tiếp thị của người sáng tạo / người tiếp nhận sớm đó mới là điều quan trọng.
Martin Beckett

11

Ngôn ngữ trở nên phổ biến vì chúng có lợi thế hơn các ngôn ngữ hiện có trong một lĩnh vực cần thiết.

Java

  • Quản lý bộ nhớ tự động (so sánh với C ++ và C)
  • Ngôn ngữ / API được tích hợp trong luồng
  • Chạy trên một máy ảo (có nghĩa là các nhà phát triển có thể sử dụng Windows trên các máy phát triển để thử nghiệm và triển khai ứng dụng mà không cần sửa đổi trên Linux / Unix).
  • Lập trình mạng dễ dàng hơn nhiều so với các ngôn ngữ phổ biến nhất trước đây (C ++ và C) và Java được phát hành khi Internet bắt đầu phổ biến.

PHP

  • Phát triển web dễ dàng
  • Được xây dựng để hỗ trợ kết nối với cơ sở dữ liệu MySQL
  • Không cần biên dịch và thật dễ dàng để bao gồm các tập lệnh ngay vào các tệp HTML của bạn.

JavaScript

  • Các chỉ ngôn ngữ cho các trình duyệt web.
  • Các trình duyệt web được sử dụng ngày càng nhiều dưới dạng máy khách mỏng (ứng dụng web).
  • Mã di động - dễ triển khai và không cần cài đặt

Mục tiêu-C

  • Ngôn ngữ cho môi trường Mac OS X và iPhone. Và iPhone đã thành công rực rỡ.

Hồng ngọc

  • Cùng với Ruby on Rails - một khung web, giúp việc phát triển web quy mô lớn trở nên dễ dàng hơn nhiều với MVC.

C #

  • Ngôn ngữ cho môi trường Windows trong mười năm qua. Hầu như tất cả các API của Microsoft đều dễ sử dụng với C #, ví dụ Winforms và WPF và WCF.

ActionScript

  • Các chỉ ngôn ngữ cho Addobe Flash / Flex, trong đó đã có một thành công lớn đối với nội dung truyền thông trên Internet và những điều mà JavaScript không thể xử lý.

Erlang

  • Đồng thời & dung sai lỗi - Erlang có một mô hình duy nhất để thực hiện các hệ thống chịu lỗi đồng thời và khung. Bắt đầu có ích cho ngành Viễn thông, sau đó mở nguồn và nhận được sự quan tâm từ các công ty Internet lớn cũng cần khả năng chịu lỗi.

1
Mô hình đồng thời của Erlang không phải là duy nhất, nó chỉ khác với mô hình được sử dụng bởi các ngôn ngữ mệnh lệnh xấu xí :). Scala có cùng loại. Tương tự, Clojure và Haskell chuyên về STM.
thay thế

4
@mathepic: Đúng, nhưng tất cả các ngôn ngữ đó đều mới hơn Erlang. Vì vậy, nó là duy nhất cho Erlang ngay từ đầu - như với hầu hết các tính năng lagu mà tôi đã liệt kê. Ý tưởng tốt là giá trị ăn cắp.
Jonas

1
C # là ngôn ngữ .net. Tôi nghĩ rằng windows thực sự được viết bằng c ++. Tôi có sai về điều này. Tôi có thể nói C # trở nên phổ biến bằng cách tận dụng một ngôn ngữ mà mọi người đã biết (C) với một khung công tác mới giúp phát triển các ứng dụng mạnh mẽ dễ dàng hơn với một công cụ chỉnh sửa mạnh mẽ, dễ sử dụng và tính đến nhu cầu của nhà phát triển và sử dụng thực tế.
SoylentGray

1
@Chad C # không liên quan gì đến C
thay thế vào

1
@mathepic - Tôi đã làm việc về lập trình C, C ++ và C #. Tôi có thể nói rằng C # Vẫn giữ nguyên gốc c của nó cho đến khi được định danh. Cấp nó đã vượt ra ngoài C không có nghĩa là nó không tận dụng ngôn ngữ.
SoylentGray

5

Tôi sẽ là một người hoài nghi: tiền và đi kèm với đó, tiếp thị.

Không phải ngẫu nhiên mà C # được Microsoft hỗ trợ, Java bởi Oracle và Objective C của Apple. Chỉ có Google Go chưa thực sự được nâng lên cho đến nay.

Tất nhiên tiền không phải là lý do duy nhất nhưng có túi sâu chắc chắn sẽ giúp đưa ngôn ngữ của bạn vào thị trường.


Phải đồng ý và mở rộng: Buzzwords, kháng cáo quản lý, tên tuổi lớn, tính năng nghe thú vị. Nếu bạn không đồng ý, tôi sẽ chỉ cung cấp cho bạn một tên: COBOL.
SF.

1
C # và Obj-C không được hỗ trợ nhiều như "bắt buộc" bởi. Thật khó để lập trình các ứng dụng windows trong c ++ chỉ với apis do MSFT cung cấp và AFAIK chỉ obj-C được phép trên ít nhất là các nền tảng di động táo. Mặt khác, việc Oracle kiện các nhà sản xuất Android có thể gây hại cho Java
Martin Beckett

1
@Martin - Phần lớn bạn đúng WRT Obj-C. Về mặt kỹ thuật, bạn có thể sử dụng những thứ như Appcelerator Ttanium để sử dụng các ngôn ngữ khác để viết ứng dụng, nhưng nó vẫn được chuyển đổi thành Obj-C để triển khai (và đó là một cuộc chiến để họ có được điều đó). Apple sẽ cấm bất cứ thứ gì khác (ngay cả PhoneGap cũng đã đi đúng hướng).
Shauna

3

Một mặt đó là tiếp thị, chính xác hơn là các bài thuyết trình, blog, v.v. Điều quan trọng là phải có các tính năng mà các lập trình viên chính có thể liên quan và thấy được lợi ích so với những gì họ biết (Java so với C ++ - trình thu gom rác so với quản lý bộ nhớ). Cuối cùng, nhưng không kém phần quan trọng là có rào cản gia nhập thấp - ví dụ, tài liệu tốt, cài đặt liền mạch, cộng đồng tốt và hỗ trợ, phát triển mạnh mẽ.


1

Hầu như tất cả các ngôn ngữ đều có các chương trình giải quyết vấn đề không tầm thường trong thế giới thực được viết bằng cách sử dụng chúng từ rất sớm.

Unix được viết bằng C, các công cụ trên Unix cũng vậy, khi C còn rất trẻ và đang phát triển.

Anaconda (chương trình cài đặt của RedHat) được viết bằng Python khi Python còn trẻ và không có sự phổ biến ngày nay.

Đây là những gì tôi có thể nhớ lại ra tay. Danh sách này có thể chạm vào từng ngôn ngữ đã tồn tại qua nhiều năm hình thành.

Sau đó, việc áp dụng quy mô lớn trong các trường đại học có thể giúp kéo dài tuổi thọ của ngôn ngữ. Java rất phổ biến tại các trường đại học như một ngôn ngữ giảng dạy. Ở một mức độ nào đó, Lisp và phương ngữ của Lisp cũng thích trạng thái này.

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.