Bạn làm việc với bao nhiêu ngôn ngữ lập trình hàng ngày và làm thế nào để bạn quản lý hiệu quả các tác vụ cụ thể của ngôn ngữ [đã đóng]


22

Chỉnh sửa:

Làm thế nào để bạn quản lý các tác vụ riêng lẻ khi làm việc trên nhiều ngôn ngữ

Trong xử lý công việc hàng ngày, bạn làm việc với bao nhiêu ngôn ngữ lập trình khác nhau?

  • Bạn có làm một sự thay đổi tinh thần khi làm việc trên mỗi ngôn ngữ?
  • Bạn có ưu tiên chúng và giữ riêng từng nhiệm vụ cho mỗi ngôn ngữ.
  • Bạn có mã theo các giai đoạn dựa trên tiến trình của từng tác vụ chuyển đổi liền mạch giữa các ngôn ngữ / IDE / Môi trường
  • Bạn có áp dụng cùng một kiểu / quy ước mã hóa cho tất cả các ngôn ngữ (không phải cú pháp) không?

Liên quan:

Có phải bình thường để lập trình viên làm việc trên nhiều dự án cùng một lúc


1
Làm cho sự thay đổi tinh thần là khá dễ dàng. Lỗi chính về tinh thần mà tôi thường gặp là khi tôi cố gắng so sánh Chuỗi với .equalstrong javascript. Ít nhất tôi luôn luôn sai theo cách đó hơn là sử dụng ==trong java.
WuHoUnited

Tôi viết 3/4 ngôn ngữ vào bất kỳ ngày nào cho cùng một dự án. Làm thế nào để tôi quản lý? Biết các ngôn ngữ. Giữ tài liệu tham khảo tiện dụng. Thực hiện theo các quy ước ngôn ngữ.
Giàn khoan

Trả chi phí chuyển đổi giữa JavaScript và một số ngôn ngữ lập trình phía máy chủ hiện không đáng, khi Node.js có hệ sinh thái thư viện lớn nhất thế giới và khi bạn có thể viết mã đồng bộ bằng cách sử dụng async / await . Mô hình "Một ngôn ngữ ở mọi nơi" cũng được sử dụng bởi Sao băng (hơn 35.000 ngôi sao GitHub).
Dan Dascalescu

Câu trả lời:


25

Hôm nay tôi đã viết Java, Python, C ++ và SQL (nếu tính). Và tôi đã làm việc chưa đầy 2 giờ.

Nếu bạn làm điều này thường xuyên, thì sự thay đổi tinh thần trở nên không đáng kể. Nó không có gì để làm với đa nhiệm. Nó giống như đi bộ một lúc, sau đó lái xe, rồi lái xe đạp, rồi bơi. Không có vấn đề, bởi vì chúng là những thứ liên tiếp.

Bất kể, vấn đề là phải hoàn thành một nhiệm vụ trước khi chuyển sang việc tiếp theo. Tôi có xu hướng xác định các nhiệm vụ theo chức năng cụ thể, sửa chữa, hoặc như vậy. Thường thì nhiệm vụ đó được thực hiện chỉ với một ngôn ngữ, nhưng nó có thể yêu cầu một vài trong số đó. Ví dụ: khi làm việc với JNI , thông thường bạn sẽ thực hiện các thay đổi cho cả hai mặt Java và bản địa song song.

Một vài câu trả lời:

Bạn có mã theo các giai đoạn dựa trên tiến trình trên từng tác vụ chuyển đổi liền mạch giữa các ngôn ngữ / IDE / Môi trường

Điều quan trọng là có thể chuyển đổi liền mạch giữa các IDE, trình soạn thảo, môi trường. Thông thường tôi giữ tất cả chúng mở tất cả các thời gian.

Bạn có áp dụng cùng một kiểu / quy ước mã hóa cho tất cả các ngôn ngữ (Không phải cú pháp) không?

Nếu đó là một giao diện mà hai ngôn ngữ đang nói, thì có - tên biến và những thứ đó phải giống nhau. Mặt khác, tôi cố gắng áp dụng phong cách mã hóa điển hình của ngôn ngữ đó.


8
Nghe có vẻ như cuộc đua tuyệt vời
setzamora

Tôi thường cố gắng hoàn thành một nhiệm vụ trước khi chuyển sang công việc tiếp theo, nhưng một nhiệm vụ duy nhất có thể yêu cầu sử dụng nhiều hơn một ngôn ngữ. Sử dụng IDE polyglot như NetBeans và / hoặc giữ tất cả các trình soạn thảo và môi trường cần thiết luôn mở. Sau đó, bạn không cần quan tâm nhiều đến ngôn ngữ (chỉ là "chi tiết triển khai") và bạn có thể tập trung vào nhiệm vụ (đó là một phần của những gì bạn thực sự phải hoàn thành - một chương trình làm việc).
Joonas Pulakka

Sẽ thật tuyệt nếu bạn có thể thêm câu trả lời ở trên vào câu trả lời của mình và thêm một chút về cách bạn đối phó với các kiểu lập trình mã hóa / quy ước.
Aditya P

@AdityaGameProgrammer: Đã thêm một số điểm.
Joonas Pulakka

18

Có một mô hình hình thành ở đây:

  • Giao diện người dùng: mọi thứ chạy trên trình duyệt (javascript, html và css)
  • Business Logic: bất kỳ toàn bộ ngôn ngữ của mục đích chung
  • Phần cuối: SQL
  • Build Script: Một số ngôn ngữ script

Vì vậy, đối với tôi: javascript, HTML và CSS, C #, Transact-SQL và Windows Powershell.


Bạn có áp dụng cùng một kiểu / quy ước mã hóa cho tất cả các ngôn ngữ (Không phải cú pháp) không?

Không, tôi thực hiện một điểm lập trình theo quy ước của ngôn ngữ. Một ví dụ đơn giản:

   // C#
   int MyFunction() 
   {
       return 0;
   }

   // Javascript
   function myFunction() {
      return 0;
   }

Sử dụng các quy ước mã hóa trực quan khác nhau giúp tôi thực hiện sự thay đổi tinh thần giữa các ngôn ngữ. Ngược lại, nếu mã của tôi trông giống nhau ở mỗi ngôn ngữ, tôi sẽ mắc lỗi cú pháp từ việc quên ngôn ngữ mà tôi đang mã hóa.


1
+1 Câu trả lời hay. Thật tuyệt vời khi bạn có thể duy trì các quy ước và phong cách mã hóa cụ thể của ngôn ngữ.
Aditya P

Chà .. trong một số trường hợp, Javascript buộc bạn phải làm việc theo cách này do dấu chấm phẩy ngầm khó chịu. Nhưng nếu không, tôi sẽ thấy không có lý do gì để làm điều đó ...
Billy ONeal

Khác với phong cách mã hóa, một cách khác để giảm bớt sự thay đổi tinh thần giữa các ngôn ngữ là thiết lập các bảng màu khác nhau cho mỗi ngôn ngữ trong trình soạn thảo / IDE của bạn.
Spoike

5

Như được chỉ định bởi SK-logic, sự thay đổi tinh thần sẽ không thành vấn đề nếu bạn sử dụng các ngôn ngữ cụ thể trong miền được chọn tốt. Nhưng thường thì bạn không thể chọn ngôn ngữ, vì vậy đôi khi phải mất một chút thời gian để chuyển đổi. Theo kinh nghiệm của tôi, khó khăn trong việc chuyển đổi cú pháp hơn là chuyển đổi kiểu lập trình. Sự thay đổi khó chịu duy nhất mà tôi luôn gặp phải là sự thay đổi kiểu nhận xét : Nếu tôi chỉ mở một tệp để nhanh chóng thay đổi một dòng mã, nó thường đi:

#  what
// the
;  f***
%  is
-- the one-line comment character or sequence?

4

Trong công việc cuối cùng của tôi: Java, C ++, C #, JavaScript và VBScript.

Nhưng may mắn thay, tất cả những điều trên đều ở những bối cảnh rất khác nhau (và trên một vài sản phẩm) - vì vậy một khi bạn biết rõ về từng cơ sở mã, việc chuyển đổi tinh thần sang các bối cảnh khác nhau thực sự khá dễ dàng và hợp lý.

Trong thực tế, điều khiến tôi bận tâm hơn là sự gián đoạn bởi các vấn đề hỗ trợ khách hàng. Chuyển nội bộ sang một nhiệm vụ bằng ngôn ngữ khác chưa bao giờ là vấn đề.


2

Tôi làm việc với 2 ngôn ngữ: c # và python.

Tôi sử dụng cả hai trong cùng một dự án, nhưng rõ ràng cho các nhiệm vụ khác nhau.

Khi tôi đang thực hiện một nhiệm vụ, tôi làm việc với nhiệm vụ đó cho đến khi nó ở trạng thái hoàn chỉnh hoặc cho đến khi tôi không thể tập trung vào nó nữa. Điều này có nghĩa là, nếu tôi phải chuyển đổi giữa các ngôn ngữ, sẽ có rất ít sự bất đồng về nhận thức vì tôi sẽ không nghĩ đến ngôn ngữ nào khi tôi hoàn thành nhiệm vụ cuối cùng.

Phải thừa nhận rằng tôi sẽ nghỉ ngơi một chút khi tôi ra khỏi một nhiệm vụ, điều này có thể giúp ích rất nhiều.


2

Càng ít càng tốt. Nó thường liên quan đến 1. Python, cộng với 2. Tạo khuôn mẫu HTML, 3. HTML + CSS và đôi khi 4. Javascript. Chuyển đổi từ Python sang JS chắc chắn đòi hỏi một sự thay đổi tinh thần, cũng bởi vì tôi cần sử dụng các công cụ khác nhau.

Tôi thêm HTML + CSS tách biệt với tạo khuôn mẫu HTML mặc dù ngôn ngữ có thể không phải là ngôn ngữ (hoặc chúng có thể, tùy thuộc vào tôn giáo của bạn), vì nó cũng yêu cầu thay đổi tinh thần và sử dụng các công cụ khác, mặc dù không quá tệ khi chuyển sang Javascript. Đấu tranh với HTML + CSS từ góc độ thiết kế, để làm cho trang trông giống như mockup yêu cầu, là một suy nghĩ khác với việc tạo các mẫu HTML. Nhưng nó trực giao với Python hơn Javascript, điều đó có nghĩa là tôi cần phải thay đổi tư duy lập trình của mình cho người khác. :)


2

Tôi sử dụng hàng ngày:

  1. HTML / CSS
  2. Javascript / JQuery
  3. VBScript / JScript
  4. PHP
  5. SQL
  6. C # / Asp.Net

Thỉnh thoảng tôi cũng sử dụng Python, Java và XML (có tính không?). Công việc của tôi liên quan đến việc chỉnh sửa các trang web khác nhau, có thể được xây dựng bằng bất kỳ ngôn ngữ web nào (thậm chí đã có một trang Perl một lần) và sử dụng các mô hình / mẫu khác nhau cực kỳ (thủ tục, MVC, OOP, v.v.).

Để trả lời câu hỏi - Tôi chủ yếu sử dụng Notepad ++ làm IDE cho 5 người đầu tiên được liệt kê, sau đó là Visual Studio cho Asp.Net.

Nó có thể là một cơn đau chuyển đổi nhanh chóng giữa mỗi ngôn ngữ - ghi nhớ liệu bạn có cần dấu chấm phẩy ở cuối dòng hay không, hoặc các vòng lặp có niềng răng hay không. Chuyển đổi từ VBScript sang JScript là điều tồi tệ nhất tuyệt đối cho việc này - các tệp đều kết thúc bằng .asp và trông khá giống nhau từ cái nhìn đầu tiên, vì vậy phải mất một thời gian để tìm ra lý do tại sao tôi gặp lỗi.


Này, bạn cũng phải làm việc ở đây! (j / k) Chúng tôi đang viết lại cơ sở mã cơ sở dữ liệu ASP và .NET trong PHP, đưa chúng tôi đến cùng một lựa chọn ngôn ngữ.
greyfade

2

Hiện tại tôi đang viết Ruby, PHP, Java, C và JavaScript và sẽ viết tối thiểu 1 giờ mỗi bài trong số này mỗi ngày. Vấn đề chính thực sự là vấn đề tìm thời gian vì tất cả chúng đều dành cho các dự án không liên quan.

Dịch chuyển tinh thần

Phong cách làm việc của tôi là như vậy mà tôi thích làm việc trong thời gian lớn. Thật không may, điều này có nghĩa là nếu tôi chỉ có một thứ duy nhất, khi tôi gặp một khối tâm thần với một đoạn mã, tôi sẽ mất nhiều thời gian để vượt qua nó. Tôi cũng không thấy nghỉ ngơi. Bằng cách có các dự án khác, và đặc biệt là các ngôn ngữ khác, để chuyển sang bất cứ khi nào tôi gặp khó khăn khi tôi trở lại ngôn ngữ gốc, tôi ngay lập tức có một giải pháp.

Do đó, vâng, có một sự thay đổi về tinh thần và tôi nghĩ nó giúp tôi làm việc hiệu quả hơn nhiều.

Nhiệm vụ ưu tiên

Tôi sử dụng trình quản lý tác vụ (gT task cho Android) và có một danh sách việc cần làm riêng cho từng dự án. Nếu một dự án yêu cầu nhiều ngôn ngữ thì tôi không tách chúng ra. Điều này thường là bởi vì chúng sẽ liên quan mạnh mẽ theo một cách nào đó. Ví dụ: JavaScript và Ruby để thực hiện một số công cụ AJAX. Nếu các ngôn ngữ về mặt kỹ thuật cho cùng một dự án nhưng dự án quá lớn đến mức chúng không liên quan đến nhau thì tôi có thể sẽ coi chúng là các dự án riêng biệt.

Nói chung, ưu tiên của tôi là "danh sách nào có nhiều nhiệm vụ nhất" nhưng tôi sẽ luôn chuyển đổi nếu gặp khó khăn trong vấn đề.

Quy ước mã hóa

Đó là một chút hỗn hợp:

  • Nếu dự án được phát triển cùng với những người khác thì rõ ràng tôi sẽ tuân thủ mọi quy ước đã được quyết định cho dự án đó.
  • Nếu dự án là cá nhân thì tôi thích mã của mình trông phù hợp với phong cách thống trị trong cộng đồng / thư viện chuẩn cho một ngôn ngữ nhất định. Tôi thấy thật khó để đọc mã Java nếu tất cả các hàm của người dùng đều ở dạng sn_case. Tương tự, các phương thức camelCase trong Ruby trông lạ và không đúng chỗ.
  • Đối với các quy ước không rõ ràng chỉ bằng cách sử dụng một ngôn ngữ, chẳng hạn như thụt lề, tôi sẽ có xu hướng áp dụng các tiêu chuẩn của riêng mình và sử dụng chúng trong tất cả các ngôn ngữ tôi sử dụng. Trong trường hợp thụt, tôi luôn sử dụng 2 khoảng trắng. Đối với kiểu niềng răng, tôi luôn sử dụng những gì Wikipedia hiện đang quyết định gọi là Kiểu dễ đọc điều khiển nhỏ gọn .

Ngoài ra: Thách thức lớn nhất đối với tôi là thực sự chuyển đổi giữa các ngôn ngữ phong cách. Rất khó để chạy đua khi mã hóa SASS cùng với Ruby và sau đó phải chuyển trở lại CSS cho mọi thứ khác. Ở mức độ thấp hơn, tôi có cùng một vấn đề với HAML / HTML và JSON / XML.


2

Tôi viết các ứng dụng cho ISP về mọi thứ, cũng có một văn hóa "làm những gì bạn thấy thoải mái", thường được viết bởi rất nhiều kỹ sư mạng, những người say mê lập trình. Tôi phải đối phó với hàng tuần, các chương trình được viết khá tốt, đến mức thực sự khủng khiếp. Những gì tôi sẽ thường gặp phải, và làm việc trên ...

  • Perl , Thường là các tập lệnh một lần, hoặc thường được sử dụng bởi những người chỉ biết (hoặc thích) Perl. Nhiều hơn những thứ di sản được viết trong Perl tôi tìm thấy. Một số nội dung tồi tệ nhất được viết bằng Perl, không phải vì ngôn ngữ kém, mà vì nó dễ bị lạm dụng bởi các lập trình viên mới bắt đầu. Tôi vẫn sử dụng bản thân mình cho một số loại chương trình một lần. Tôi hiếm khi sử dụng nó cho bất cứ điều gì lớn hơn.
  • PHP , Rất nhiều thứ xung quanh, thường là một ngôn ngữ khởi đầu cho các công cụ tìm kiếm. Một số chương trình được viết rất tốt, một số schlock. Đối với một số loại ứng dụng web nhất định, tôi sẽ chọn PHP vì tôi có thể đưa nó xuống đất nhanh hơn.
  • Shell Scripting , Chủ yếu sử dụng nó để chạy các chương trình hoặc tác vụ khác như đọc nhật ký.
  • Mong đợi , vẫn gặp phải điều này (và những người quá khích, những người khăng khăng cho rằng đó là niết bàn để thực thi các lệnh trên các thiết bị mạng). Tôi làm việc với nó khi tôi phải làm, nhưng một chú mèo con bị giết ở đâu đó trên thế giới khi tôi bắt gặp một trong số hàng ngàn chương trình dài mà không có một chức năng nào trong tầm nhìn, chỉ là một trang trại mì ống lặp dài.
  • C , Hiếm khi được sử dụng vì các vấn đề di động, nhưng tôi sẽ sử dụng nó để thực hiện các nhiệm vụ cụ thể.
  • Java , tôi sử dụng điều này thường xuyên vì hỗ trợ thư viện rộng rãi và triển khai dễ dàng. Chúng tôi có một mạng lưới rất không đồng nhất và một nhân viên CNTT có chương trình nghị sự khác với tôi. Với Java tôi có thể bao gồm các thư viện và không phải lo lắng rằng CNTT phải "nâng cấp" thứ gì đó trên hệ thống mà tôi cần để triển khai chương trình. Thông thường đây là ngôn ngữ lập trình của tôi lựa chọn.

Ngoài ra còn có các ngôn ngữ khác (.net, VB, Phyton, Rails, v.v.) ngoài công ty, nhưng tôi chưa phải làm việc với chúng ....

Chỉnh sửa, để chỉnh sửa ...

Bạn phải thay đổi tinh thần khi bạn làm việc giữa các ngôn ngữ. Thông thường những gì tôi sẽ mất theo dõi là cú pháp. Tôi giữ một bộ sưu tập sách tham khảo sẵn sàng. Tôi sẽ thấy mất khoảng nửa giờ để quay lại với suy nghĩ của ngôn ngữ khác. Cú pháp càng khó hiểu cho ngôn ngữ, sự thay đổi càng dài. Tôi thấy rằng việc chuyển từ làm Java sang làm Perl có thể mất nhiều thời gian nhất nếu tôi không chạm vào Perl một thời gian. Bạn càng làm điều này, nó càng dễ dàng.


1

Tôi thường sử dụng sáu ngôn ngữ trở lên trong một dự án. Hầu hết trong số họ thường chỉ dành riêng cho dự án đó.

Sự thay đổi tinh thần chỉ được yêu cầu nếu bạn đang sử dụng một ngôn ngữ không phù hợp cho một nhiệm vụ. Nếu không, đó là tự nhiên để sử dụng phù hợp nhất. Các bộ ngôn ngữ khác nhau được sử dụng cho các giai đoạn khác nhau của dự án.


Bạn là người quản lý dự án hay bạn viết mã trong đó?
Aditya P

@AdityaGameProgrammer, tôi viết mã cho họ.
SK-logic

Tâm giải thích một downvote?
SK-logic

1

Tôi sử dụng C (nhúng), C ++ (máy tính để bàn), Python, Matlab và VHDL (một loại ngôn ngữ lập trình phần cứng) thường xuyên, thường là tất cả trong cùng một ngày. Trong môi trường của tôi, loại ngôn ngữ khéo léo này là điều cần thiết trong quan điểm của tôi.

Tôi thường không thể có được mọi thứ tôi cần cho một dự án cụ thể được thực hiện bằng một ngôn ngữ một cách hiệu quả. Ví dụ, cả C và VHDL nhúng đều ở mức khá thấp, vì vậy tôi thường sử dụng Python để phân tích kết quả của chúng (hoặc thậm chí tạo mã).

Chuyển đổi giữa chúng nhanh chóng không phải là vấn đề sau một thời gian, nó giống như chuyển từ búa sang tuốc nơ vít - công cụ phù hợp cho công việc.


1

Nó thực sự phụ thuộc vào cách làm việc được xác định ... Tôi sử dụng C # để phát triển các ứng dụng Microsoft Surface mỗi ngày. Java tôi cũng sử dụng hàng ngày cho các ứng dụng Android của mình. Nhưng tôi cố gắng giáo dục bản thân và bắt đầu sử dụng R, Ruby và Objective-C. Đôi khi tôi cũng cần một số SQL và nếu bạn bao gồm các ngôn ngữ script và các ngôn ngữ khác vào câu hỏi của bạn thì JavaScipt, SPARQL và BeanShell.

Bạn có áp dụng cùng một kiểu / quy ước mã hóa cho tất cả các ngôn ngữ (Không phải cú pháp) không?

Tôi cố gắng tuân theo các quy ước mã hóa của từng ngôn ngữ, nhưng đặc biệt là giữa Java và C # Tôi gặp một số khó khăn vì các dấu ngoặc nhọn và cách đặt tên phương thức chữ hoa trong C #:

public void test() {
   ...
}

so với

public void Test()
{
   ...
}

Cả hai kiểu niềng răng đều được chấp nhận trong C #. Đừng dành quá nhiều thời gian đánh thuế bộ não của bạn về điều này. :-)
Cody Grey

0

Tôi xây dựng các ứng dụng web. Vì vậy, hiện tại của nó:

  • XHTML
  • JavaScript
  • C # là một phần của
  • ASP.Net Framework ( loại này cũng là một ngôn ngữ)
  • T-SQL cho giao tiếp cơ sở dữ liệu
  • Tiếng Anh để giao tiếp với con người.

Biên tập viên: Văn bản tuyệt vời (ngoài sự lựa chọn), Visual Studio 2010 (không có lựa chọn khả thi nào khác khi nói đến ASP.Net)


0

Trong công việc của mình, tôi sử dụng Java, C, Python, Django và các bit nhỏ của PHP. Tôi cũng đã làm việc với một dự án thực sự nhỏ trong C ++ của Microsoft.

Tôi không sử dụng tất cả chúng hàng ngày, nhưng một số ngày tôi không sử dụng tất cả chúng. Vào một ngày thông thường tôi chỉ sử dụng một hoặc hai. Việc lập trình tôi làm ở nhà thường liên quan đến việc làm việc với các công nghệ khác nhau mà tôi sử dụng tại nơi làm việc như Qt hoặc Ruby on Rails.

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.