2010-04-09 11 views
14

Tôi là nhà phát triển Delphi trên nền tảng Windows, gần đây đã đọc hướng dẫn PHP tại W3CSchools, có vẻ thú vị.Làm thế nào để bạn sử dụng ngôn ngữ kịch bản (PHP, Python, v.v.) để cải thiện năng suất của bạn?

Chúng ta đều biết ngôn ngữ kịch bản rất giỏi phát triển trang web, nhưng tôi cũng muốn sử dụng nó để cải thiện năng suất của mình hoặc làm một số công việc tẻ nhạt được thực hiện nhanh chóng, có thể xử lý chuỗi/tệp nhanh chóng và bẩn?

Bạn thường làm gì với các ngôn ngữ kịch bản ngoài việc phát triển phần mềm? Và chúng ta cần một IDE/trình soạn thảo phù hợp để có được năng suất khi viết kịch bản cho mục đích này?

+4

bình chọn loại câu hỏi. hãy làm cho nó cộng đồng wiki. – Mike

+6

bất cứ điều gì Mike ...không quan trọng – ecounysis

+0

Không có gì ngăn cản bạn xây dựng mã throwaway trong ngôn ngữ 'doanh nghiệp'. Nếu bạn đã quen với ngôn ngữ và công cụ, nó sẽ vẫn nhanh hơn. – CurtainDog

Trả lời

17

Tôi sẽ cho bạn biết cách tôi đã cải thiện năng suất của mình bằng Python trên Windows. Tôi chỉ cố gắng viết mọi thứ bằng Python - mọi ứng dụng tôi cần, trừ khi tôi biết nó sẽ không mở rộng và tôi sẽ cần các công cụ hiệu quả hơn (trong trường hợp cá nhân tôi sử dụng C++, nhưng bạn cũng có thể sử dụng C#/Delphi).

Nó chỉ ra rằng đối với hầu hết (> 95%) các công cụ và tiện ích cần, Python (kết hợp với PyQt cho GUI) là đủ tốt, và đó là một ngôn ngữ hiệu quả hơn nhiều so với C++. Điều quan trọng là ngừng suy nghĩ của Python như là một "ngôn ngữ kịch bản". Nó không phải là một ngôn ngữ lập trình ít hơn C++/Java/C#/Delphi/những gì nói bạn. Nó có sức mạnh, và nó có những hạn chế của nó. Miễn là bạn biết về chúng và biết cách chọn công cụ thích hợp cho công việc, bạn sẽ làm tốt.

Bạn không cần bất kỳ IDE đặc biệt nào. Tôi sử dụng Scite cho tất cả mã hóa Python của tôi (trên Windows Linux, nhân tiện) và nó hoạt động rất tốt.

+6

+1 cho Python là một ngôn ngữ lập trình mục đích chung. –

+1

Đúng là "ngôn ngữ kịch bản" là một khái niệm ít liên quan hơn 10 năm trước. Python có thể được mô tả như là một ngôn ngữ * năng động *, với tất cả những lợi thế mà nó mang lại (gõ động là một trong số chúng). – EOL

+0

Cảm ơn bạn Eli, trái ngược với các ngôn ngữ động khác, tôi có vẻ giống như Python (Simple và OO), và tôi muốn tôi có thể mua đoạn mã sẵn sàng từ marketpace như codecanyon.net, bạn biết đấy, tôi cũng muốn làm một số tác vụ dựa trên web (chính để trình bày ứng dụng dành cho máy tính để bàn và quản lý giấy phép/tải xuống liên quan, v.v.) .... –

2

Câu trả lời ngắn gọn là, bạn có thể làm được nhiều thứ với ngôn ngữ kịch bản - nhưng bạn vẫn có thể gọi nó là lập trình hoặc phát triển phần mềm.

Nhưng, trả lời các câu hỏi của bạn, những gì tôi thấy hữu ích nhất trong công việc của mình, để tăng năng suất, rất nhiều kịch bản shell/perl/python.

Tôi nghĩ rằng việc sử dụng phổ biến nhất là các loại báo cáo (theo nghĩa rộng), nói rằng có một tệp nhật ký và muốn lấy một số thông tin nhất định (hoặc một số loại thống kê), tập lệnh có thể giúp bạn đạt được điều đó trong thời gian rất ngắn.

Một số từ khóa gợi ý cho bạn: shell scripting, regular expressions, output format.

Cảm ơn

+0

Kuba, cảm ơn bạn đã chia sẻ. –

1

Vì vậy, tôi đã thường xuyên được sử dụng Python với các giải pháp nguyên mẫu để công việc lập trình khác nhau (rất tốt để có được những thuật toán ngay trước khi triển khai thực hiện với tất cả các chuông và còi ở một số ngôn ngữ lập trình khác), và tôi có đang sử dụng kịch bản shell BASH để tự động hóa một loạt các tác vụ (ví dụ như chạy một chương trình trên nhiều bộ đầu vào khác nhau, lưu kết quả, đường ống đến grep và các tiện ích khác, v.v.).

Khi nói đến tedium, tôi thực sự khuyên bạn nên BASH. Bạn có thể lấy nó trên Windows bằng cách cài đặt Cygwin. Ví dụ: tôi thường xuyên thấy mình làm những việc như sau cho các khóa học khác nhau của tôi:

 
for i in {1..10} ; do 
    ./process_data input-$i.txt | tee result-$i.transcript 
done 

Bạn không cần trình chỉnh sửa tốt ... bất kỳ trình soạn thảo văn bản nào cũng sẽ hoạt động tốt. Điều đó nói rằng, nếu bạn đang tìm kiếm một trình soạn thảo Python tốt, Eclipse với PyDev là khá tốt. Cá nhân, tôi chỉ sử dụng Xcode như một trình soạn thảo mã đích chung cho tất cả mọi thứ ... mặc dù nó không thực sự mang bất cứ thứ gì vào bảng cho các kịch bản shell Python hoặc BASH ...tất nhiên, bạn không có Xcode trên Windows. Tuy nhiên, bạn có thể sử dụng Notepad ++, Notepad hoặc Wordpad.

+0

Cũng tốt cho Geany và nền tảng chéo. – detly

+0

+1 cho cygwin/bash –

+0

Cảm ơn Michael, vì tôi cũng muốn sử dụng ngôn ngữ kịch bản/động như vậy để thực hiện một số tác vụ phụ của máy chủ web, tôi nên chọn ngôn ngữ hỗ trợ kịch bản web ... –

1

Là người dùng 50/50 cửa sổ/linux tại nơi làm việc, python đặc biệt hữu ích, vì hầu hết mọi thứ tôi viết là nền tảng chéo và cũng vì cửa sổ không thực sự có ngôn ngữ shell rất hữu ích. Với pyqt, tôi có thể tạo một GUI khá ấn tượng chỉ trong vài giờ. Tôi khá chắc chắn hơn trong vài năm tới, python sẽ chiếm lĩnh thế giới.

+0

PyQT có hỗ trợ tất cả các tính năng QT không? QT có vẻ thú vị cho dev máy tính để bàn. –

+0

@Edwin, Đó là mục tiêu của họ. Và tôi đã không đi qua một tính năng Qt mà không được hỗ trợ trong PyQt được nêu ra. Nó có thể là loại khó hiểu; mặc dù, bởi vì các số phát hành PyQt không nhất thiết phải tuân theo các số phát hành Qt. Nhưng các python/pyqt combo là khá mạnh mẽ –

+0

Âm thanh tốt! BTW, có danh sách các ứng dụng desktop đẹp mắt được phát triển với Python + QT không? –

1

Tôi là TextMate người dùng và chủ động phát triển các tiện ích mở rộng ("gói") để tôi sử dụng riêng trong php, ruby ​​và javascript.

+0

Cảm ơn bạn, tôi không sử dụng máy Mac, thật không may ... –

11
  1. Bạn chắc chắn có thể tự giúp mình bằng cách tự động hóa nhiều tác vụ bằng ngôn ngữ kịch bản. Xin lưu ý: một số ngôn ngữ "scripting" - như Perl - thực sự là ngôn ngữ phát triển phần mềm đa năng rất mạnh, chỉ được gắn nhãn là "scripting" bởi vì niche và/hoặc parentage ban đầu của chúng là kịch bản (và bởi vì nó rất dễ dàng để làm kịch bản đơn giản với họ).

    Cá nhân tôi sử dụng Perl cho cả tự động hóa kịch bản nhanh (sử dụng 2%), phát triển web (8% sử dụng) và phát triển phần mềm tài chính doanh nghiệp (còn lại 90%).

  2. Ví dụ về những gì bạn có thể làm - câu trả lời là "khá nhiều thứ" và phần lớn phụ thuộc vào công việc điển hình của bạn cần tự động hóa là gì. Tôi sử dụng Perl cho công cụ liên quan đến tập tin (tập tin tổ chức/dọn dẹp/đổi tên) để xử lý nội dung (nguồn gốc của Perl và một trong những bộ mạnh nhất vẫn đang được xử lý văn bản) và báo cáo các loại ("R" trong Perl là viết tắt của "Reporting"), và cho các loại dữ liệu crunching mà chỉ là quá khó khăn để làm một cách nhanh chóng trong Excel. Xin lưu ý rằng Perl có một loạt các thư viện (gọi là mô-đun) có sẵn thông qua CPAN có thể được sử dụng để làm khá nhiều thứ ngoại trừ việc nướng bánh mì hoặc du lịch thời gian; cũng như nhiều khuôn khổ để phát triển phần mềm nghiêm túc.

    Để phản chiếu câu trả lời Python, Perl cũng có thể được sử dụng cho các công cụ GUI trên Windows - Tôi sẽ không giải thích ở đây vì SO có các cuộc thảo luận rất toàn diện về chủ đề nếu bạn quyết định đi với Perl.

  3. Như một ví dụ rất cụ thể minh họa ở trên, 2 dự án cuối cùng tôi đã làm cho bản thân mình được hệ thống lập chỉ mục tên tập tin, meta-data, nội dung và cung cấp một cách để tìm kiếm thông qua các chỉ số chỉ mục. Đầu tiên là tìm kiếm mã cục bộ (phiên bản người nghèo của công cụ tìm kiếm mã Google), phiên bản thứ hai là hệ thống quản lý thu thập tập tin cho các mp3 của tôi (tôi có đôi chó dám bất kỳ phần mềm hiện có nào nhằm mục đích cho phép tôi tìm kiếm biểu thức chính quy ngẫu nhiên bằng thẻ từ khóa). Cả hai được sử dụng SQLite back-end và Perl để lập chỉ mục và front-end. Ví dụ cụ thể thứ hai là một 2-lót đếm bao nhiêu up-phiếu tôi đã có cho một thẻ cụ thể trên StackOverflow :)

  4. Bạn sẽ được hưởng lợi rất nhiều từ một IDE tốt hoặc chỉ lập trình biên tập cho bất kỳ lập trình, kịch bản bao gồm. Trên Windows, bạn có thể sử dụng Notepad ++ hoặc UltraEdit hoặc nhiều hơn nữa - SO nên có một danh sách ở đâu đó. Bất kỳ trình soạn thảo nào có "intellisense" (hoàn thành workd thông minh) đều có một cạnh.

+2

Tại sao bạn nên downvote? – DVK

+1

Có lẽ vì mọi người nghĩ rằng mũi tên xuống có nghĩa là "Tôi không đồng ý/không thích câu trả lời này", không phải "Câu trả lời này không hữu ích". – tzot

+0

Xin chào DVK, Cảm ơn bạn rất nhiều vì đã chia sẻ trải nghiệm cuộc sống thực của bạn, tôi hiểu rồi! –

3

Ngôn ngữ lập trình có thể rất mạnh.Đây là cách tôi tin Lua cải thiện năng suất của tôi:

  • Các dữ liệu trung tâm là mảng kết hợp (bảng băm có thể thay đổi). Việc triển khai của Lua cực kỳ hiệu quả và phục vụ tốt như hash, table, set và list.

  • Xử lý chuỗi nằm ở vị trí tuyệt vời: gần như mạnh mẽ như cụm từ thông dụng và dễ đọc hơn nhiều. Ký tự thoát mẫu % khác với ký tự thoát chuỗi \. Lua của "mô hình với chụp" là đơn giản hơn so với POSIX regexps và nhiều đơn giản hơn Perl regexps, và nó đáp ứng 90% nhu cầu quét chuỗi của tôi. Một ví dụ tuyệt vời về thiết kế kỹ thuật.

Hai tính năng này bao gồm dữ liệu chính. Trên đầu trang này,

  • Bảng này là loại có thể thay đổi duy nhất, làm cho chương trình dễ dàng hơn để giải thích.

  • Lua có hàm hạng nhất, hàm lồng nhau, vì vậy tất cả sức mạnh của mô hình chức năng có sẵn nếu bạn cần — nhưng nếu bạn không sử dụng, bạn không trả tiền.

  • Lua có cấu trúc lặp được xây dựng sẵn, có nguồn gốc ngôn ngữ, thích hợp để lặp qua bộ sưu tập, hệ thống tệp, bạn đặt tên cho nó. Tốt hơn nhiều so với việc có một số "đối tượng lặp" với "các phương thức lặp". Iteration là đủ quan trọng mà tôi được hưởng lợi rất nhiều từ việc có một ngôn ngữ xây dựng dành cho nó (vòng chung for).

  • Ngôn ngữ đủ đơn giản sau khi nghiên cứu khiêm tốn, tôi hiểu tất cả của nó.

  • Có triển khai tương tác nhanh như chớp.

  • Khi cần, tôi có thể nhập bất kỳ thư viện C hiện có nào vào Lua.

  • Thư viện Lua tiêu chuẩn đáp ứng hầu hết nhu cầu của tôi trong khi vẫn đủ nhỏ để có thể hiểu được. Nếu tôi cần một thư viện mục đích đặc biệt (XML, HTTP, phân tích cú pháp), nó thường đã có sẵn và dễ hiểu, đủ để hiểu.

  • Một lần nữa khi cần, tôi có thể dễ dàng mở rộng với các loại dữ liệu của riêng mình.

Tôi thấy rằng tôi đang sử dụng Lua cho tất cả các tác vụ tôi đã từng làm với sh, awk, sed, perl và đám đông đó. Tôi cũng thấy rằng 90% thời gian tôi có thể viết một chương trình Lua đơn giản, hữu ích nhanh hơn nhiều so với một chương trình C đơn giản, hữu ích. (10% còn lại là khi tôi chủ yếu thực hiện các cuộc gọi hệ thống.)

Mặc dù tôi đã mất đếm số lượng ngôn ngữ tôi biết rõ (hơn 10.000 dòng mã bằng văn bản), những ngày này hầu hết các nhu cầu của tôi được đáp ứng bằng cách chỉ 3:

  • Lua cho hầu hết các chương trình nhẹ, kể cả xử lý chuỗi/tập tin nhanh chóng-và-bẩn mà bạn đề cập đến

  • C trong giảng dạy (vì tôi phải dạy C)

  • Haskell cho prototyping (và đôi khi thực hiện) phức tạp hoặc larg hệ thống điện tử, đặc biệt là trình biên dịch

Tôi cũng đã sử dụng một hỗn hợp của Lua và C cho một số ứng dụng khá đáng kể, như nbibtexnoweb 3.

+0

Cảm ơn Norman, tôi đã nghe những điều về Lua, nhưng có vẻ như có ít tài nguyên hơn về nó trên web. –

+0

@Edwin: Tôi nghĩ bạn sẽ tìm thấy mọi thứ bạn cần tại lua.org. Một điều kỳ lạ của Lua là họ không sử dụng các diễn đàn web nhưng đang gắn bó với một danh sách gửi thư. Đó là * rất * hoạt động! –

+0

cảm ơn liên kết. Cá nhân tôi thích cú pháp của PYthon tốt hơn :) –

2

Vì vậy, bạn có thể đã có hình ảnh, bạn sẽ thực hiện một số tác vụ nhanh hơn bằng cách sử dụng ngôn ngữ kịch bản (và liên quan đến từ scripting: Tôi không coi nó là xúc phạm nữa, hoàn toàn ngược lại). Địa ngục, tôi có vài người bạn (vô tình là người lập trình Delphi) vẫn sử dụng Delphi để thực hiện một số nhiệm vụ một lần, tìm kiếm trong các tập tin văn bản vv, chi tiêu giờ viết các lớp và biểu mẫu Delphi, biên dịch lặp đi lặp lại, thay vì viết vài phút Python/Ruby/Perl một lớp lót.

Nhưng tôi nghĩ có điều quan trọng hơn với nó (với lựa chọn đúng): bạn sẽ học các khái niệm lập trình mới. Bạn sẽ phát triển như một lập trình viên. Bạn sẽ vượt qua cái cũ "bạn có cái búa, vì vậy mọi thứ trông giống như một cái đinh" quan điểm. Bạn sẽ học cách thở lại.

BTW, khi tôi nói "được lựa chọn đúng", tôi khuyên bạn nên chọn ngôn ngữ được sáng tạo đúng cách với các khái niệm lập trình chức năng mạnh mẽ. Vì vậy, tôi thực sự bỏ qua PHP và đi cho Python hoặc Ruby.

+0

'học các khái niệm lập trình mới', điều đó thật tuyệt! Những năm này tôi đã phát triển một ứng dụng Windows trên máy tính để bàn và bán nó trực tuyến, tôi luôn muốn hoàn thành công việc nhanh nhất có thể, không muốn đầu tư thời gian vào việc học một ngôn ngữ mới .... –

1

Tôi sử dụng ngôn ngữ kịch bản để thực hiện nhiều quá trình xử lý dữ liệu trước/sau. Bé nhỏ hay to lớn.

Gần như tất cả các ngôn ngữ kịch bản đều có khả năng xử lý tệp, văn bản, đồ họa, vv tuyệt vời/nhanh. Và rất dễ dàng mà không có khối lượng của mã tấm nồi hơi và các bước biên dịch.

Và như ai đó đã đề cập, bạn sẽ được uốn cong cơ bắp và học một thế giới mới về khả năng.

Tôi nhảy từ một ngôn ngữ kịch bản này sang ngôn ngữ khác, đôi khi kết hợp chúng lại, chỉ để có được những gì tôi muốn thực hiện nhanh hơn. Làm tôi sợ hãi khi biết rằng bạn có thể làm hầu hết mọi thứ bạn có thể nghĩ. Nếu bạn không thể thì luôn luôn có stackoverflow và các ngôn ngữ khác (thẻ ngôn ngữ bất khả tri) bạn có thể chấp nhận cho một giải pháp nhanh hơn (và tốt hơn thường), bạn sẽ nhận được một.

+0

Cảm ơn bạn đã chia sẻ zaf –

0

Tôi sử dụng thư viện chuẩn của từng ngôn ngữ kịch bản để hoàn thành công việc nhanh chóng bằng API được ghi nhận tài liệu.Ví dụ, đây là những công cụ tôi sử dụng trong các ngôn ngữ kịch bản phổ biến nhất:

  • PHP

    • XSLT - tạo báo cáo XML
    • ImageMagick - tối ưu hóa hình ảnh
    • curl - thử nghiệm tích hợp
    • intl - internationalization
  • Python

    • rùa - nỗi nhớ
    • plistlib - cấu hình OSX
    • sqlite - nhanh chóng cơ sở dữ liệu mẫu
    • sched - lập kế hoạch nhiệm vụ nhanh chóng
    • difflib - diffing
    • shutil - tập tin lưu trữ
  • của Ruby

    • Rake - tự động sao lưu và các bản ghi
    • mong đợi - tự động xác thực nhắc
    • viết tắt - autocomplete
    • RSS - Tạo nguồn cấp dữ liệu
    • FileUtils - file so sánh
    • GDBM - serializing chương trình nhà nước
    • win32ole - Tự động hóa MSXML/IE
    • did_you_mean - Tránh lỗi chính tả
  • Perl

    • Env - sửa chữa con đường phát
    • Memoize - thuật toán kiểm tra
    • TAP - kiểm tra việc tổ chức
    • Params :: Kiểm tra - xác nhận API

Tài liệu tham khảo

Các vấn đề liên quan