Thông báo

Collapse
No announcement yet.

Mã nguồn mở - chuyên nghiệp

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Mã nguồn mở - chuyên nghiệp

    Chào các cao thủ, và những người yêu thích mã mở.

    Sau một thời gian chuyển sang dùng LINUX, và những phần mềm nguồn mở khác, SL thấy không thể rời xa, và muốn làm việc lâu dài với nó.

    Đã dùng nguồn mở, mà chúng ta cứ mang tư tưởng như cách đây 10, 15 năm, thấy đâu dùng đó, thiếu hiểu biết về bản quyền, về nguyên tắc sở hữu trí tuệ, thì thôi cứ theo đuôi Microsoft cho rồi.

    Do đó SL mở luồng này, kêu gọi các anh em đóng góp chút hiểu biết, để mọi người có thể định hướng chọn công cụ đúng đắn hơn cho mục đích của mỗi người. Trước tiên là các loại giấy phép. thoả thuận, quyền và nghĩa vụ khi sử dụng một số công cụ nguồn mở thông dụng.

    Ví dụ: khi lập trình trên LINUX, để điều khiển cổng comm, lập vài giao diện vớ vẩn, ta dùng công cụ nào cho nhanh (VD: Qt4, JAVA)? Sau khi làm xong, có anh hàng xóm thấy hay, muốn mua về dùng thì ta bán cho anh ta được không (nếu viết bằng Qt thì sao? bán chương trình có vi phạm thỏa thuận sử dụng Qt không? có phải cung cấp mã nguồn không? Nếu viết bằng JAVA thì sao?)....

    Thật sự, học để lập trình một ngôn ngữ mới không khó, nhưng để có một cái nhìn toàn diện, tìm được đúng cái mình cần thì khá chua cay. Mong các MOD, Admin hỗ trợ.

    Song Luan đề nghị ta bàn về Qt trước.

  • #2
    Thì bắt đầu từ Qt ...

    _ Qt là gì ?
    Là bộ thư viện lớp hỗ trợ lập trình giao diện đồ họa bằng C++ và (có thể) Python. Ban đầu nó chỉ là thư viện đồ họa, sau đó mở rộng dần ra điều khiển các thứ khác: mạng, các cấu trúc dữ liệu động, đa luồng, âm thanh ... Tới giờ thì quá nhiều và trở thành cái gọi là phần mềm khung (software framework). So sánh thứ tương tự của thế giới Windows thì Qt (ngày xưa) tương đương với MFC và Qt bây giờ tương đương .NET framework.

    _ Giấy phép ?
    Qt sử dụng giấy phép kép: (L)GPL và thương mại. Lý luận chi tiết thì dài dòng, nhưng triết lý của hãng rất đơn giản: nếu người phát triển phần mềm cung cấp phần mềm miễn phí và mở mã nguồn, giấy phép áp dụng là (L)GPL - tức là cả 2 đều là phần mềm FLOSS; nếu người phát triển bán phần mềm, khi đó bắt buộc phải mua giấy phép thương mại từ hãng sản xuất Qt - tức là cả 2 đều bán và cùng kiếm được lợi. Không có chuyện người phát triển dùng bản Qt mã mở, miễn phí để phát triển phần mềm thương mại đem bán; tất nhiên hãng chủ của Qt không kiểm soát được hết, nhưng nếu nó phát hiện ra có thể kiện ra tòa.
    Phần mềm tự do hoặc không dùng máy tính nữa !.

    Comment


    • #3
      Hãng sở hữu Qt hiện là Nokia. Thật tình, phát triển phần mềm trên Qt có vẻ đơn giản, nhưng để làm thương mại thì số tiền >3500USD/người dùng cũng đáng suy nghĩ. Nếu biết thế vẫn làm bừa, dùng bản miễn phí cho thương mại thì cứ im lặng mà làm, chắc cũng ít người biết!!! Tuy nhiên, thử nghĩ khi công ty bạn phát triển lớn lên, nổi tiếng (ai cũng muốn thế), thì một vết bẩn nhỏ cũng không nên có, ban đầu.

      Nhiều người tư vấn nên dùng JAVA, tuy không mở nhưng có thể hoạt động trên nhiều nền tảng, và miễn phí. Tuy rằng JAVA hoạt động không nhanh như C, nhưng cũng được một số người làm điều khiển chấp nhận, và nó là ngôi sao trong thế giới Internet.

      Ý kiến anh em về JAVA thế nào?

      Comment


      • #4
        Thiết kế chương trình (trung bình tới phức tạp) trên Linux thì nên đi theo hướng back-end và front-end tách biệt, đặc biệt là các chương trình nặng về xử lý, tính toán:
        - back-end có thể viết bằng cái gì cũng được, nếu nói cùn ra thì opensource cho khỏi mất tiền (mà lại được tiếng, không lo những vết bẩn nhỏ ban đầu) cũng chả chết ai
        - front-end để dân chuyên nghiệp làm: đẹp hơn, nhanh hơn và chi phí thấp hơn (bắt thằng kỹ sư lập trình chuyên DSP đi nắn nót mấy cái text box thì vỡ nợ sớm)

        Riêng đặc thù sản phẩm của tôi, bây giờ rất thích viết giao diện bằng PHP , đầy đủ api rồi thì thêm nhanh, sửa nhanh, cần gấp thì giao cho mấy chú SV quen, ngon-bổ-rẻ.
        Last edited by vutamhoan; 21-11-2009, 09:08.
        Some rights reserved!

        Comment


        • #5
          Nhớ lại cách đây gần 10 năm, mới bắt đầu biết đến VB (trường đại học dạy), thấy khác nhiều so với PASCAL, ngôn ngữ gối đầu giường của các anh mọt sách ??? Tốc độ viết ứng dụng nhanh gấp mấy lần .

          Mấy năm sau đó, cứ cái gì cũng VB, từ cổng Comm, CSDL đơn giả, lưu trữ (Excel).... Lúc đó, xã hội mấy anh biết đến chữ "bản quyền trí tuệ"?

          Rồi đến khi mình lớn hơn một chút, làm những việc lớn hơn một chút (so với mấy cái đồ án vớ vẩn), và phong trào nguồn mở rộng lên, tự cảm thấy phải có sự thay đổi. Lúc này phải chọn lại công cụ, học lại từ đầu, để có thể làm được những việc có tính ứng dụng một chút.

          Dùng VB tiếp thì sao? *****? Hay bỏ một núi tiền để trả bản quyền cho một công cụ không dùng thường xuyên cho lắm? Và khi bán một gói ứng dụng nào đó thì sao? Chẵng lẽ lại bán một thứ làm ra từ đồ dùng chùa?

          Cách giải quyết thỏa đáng nhất là dùng những công cụ mở, lại phải học từ đầu, như khi xưa học VB ấy. Có mất gì đâu? Mất rất nhiều thời gian. Mỗi đêm thức thêm 2h, chắc ổn.

          Lỡ như mình lại chọn sai lần nữa, 5 năm sau lại bắt đầu tiếp, khi đó còn sức không?

          Xã hội đâu phải mình ta gặp cảnh này (nếu chỉ mình, chắc sẽ tìm vài cao thủ, đàm đạo trên quán caffee, rồi làm theo hướng dẫn của họ), nên cứ đem lên diễn đàn để anh em góp ý, biết đâu cũng giúp được nhiều anh em khác.

          Chúng ta ở đây, hầu hết là dân điện tử, ngôn ngữ lập trình ứng dụng là một công cụ phụ, thậm chí không biết có thể thuê người làm. Vậy đâu cần dùng nhiều lắm, chỉ cần giải được bài toán thực tế mình cần. Nhưng là dân điện tử, ngôn ngữ lập trình phải làm được dễ dàng một số việc, như cổng comm, giao diện dễ dàng một chút... Và nên (hay phải) thỏa mãn yêu cầu bản quyền.

          Rất mong góp ý của các anh em. Riêng tôi, cũng sẽ có những tìm tòi riêng mình, biết gì sẽ đưa lên diễn đàn bàn luận.

          Comment


          • #6
            Ngay cả khi đã chọn đúng công cụ, sau mỗi 5 năm vẫn nên xem xét lại công cụ của mình và so sánh với các công cụ xung quanh: ưu thế nào, nhược ra sao, xu hướng thiên hạ là gì ... Chẳng có gì là nhất thành bất biến cả. Mọi việc đều thay đổi là lẽ đương nhiên.

            Nên lựa chọn những gì là chuẩn quốc tế, dù là phần cứng hay phần mềm hay chỉ là định dạng tài liệu. Visual Basic là sản phẩm của hãng Micr$oft, Java là đứa con của Sun ... Số phận của chúng phụ thuộc vào hãng sản xuất. Trong khi đó, C/C++ là chuẩn IEC/ISO, xét về tuổi thọ nó còn tồn tại lâu; xét về độ ổn định, sự tự do khi lựa chọn công cụ cũng nhiều hơn hản. Tương tự như vậy, một dự án FLOSS (thư viện, ứng dụng, nhân hệ điều hành) về bản chất là mở & tự do nên sẽ không bao giờ chết cả chừng nào vẫn còn ít nhất 1 người dùng và phát triển - điều này khác với sản phẩm của hãng thương mại. Bạn có mã nguồn trong tay, bạn có quyền (theo định nghĩa của phong trào GNU) trong tay, bạn làm gì với nó cũng được. Rất nhiều phần mềm FLOSS đóng băng trong nhiều năm, sau đó lại phát triển tiếp mạnh hơn, trong khi sản phẩm thương mại nếu không bán được đủ nhiều là sẽ tự chết, mặc kệ người dùng thích nó tới mức nào.

            Quan điểm của bạn vutamhoan rất đúng, nhất là khi muốn phát triển hệ thống (có thể bao gồm nhiều phần mềm nhỏ hoặc kết hợp cả phần cứng) một cách chuyên nghiệp. Phần mềm cấp thấp nên viết bằng C, thậm chí bằng hợp ngữ nếu dùng vi điều khiển. Phần mềm cấp trên dùng cái quái gì cho phù hơp cũng được: Java, PHP, Javascript, Python, Perl, C++ kết hợp thư viện đồ họa ...

            Không nên sợ chọn sai, chỉ sợ người lần chần không lựa chọn rồi cuối cùng hỏng cả.
            Phần mềm tự do hoặc không dùng máy tính nữa !.

            Comment


            • #7
              Nếu muốn chọn một thư viện cấu trúc tương tự MFC, rất nhiều tính năng, chạy đa nền tảng (Linux, Solaris, MacOS, Windows) và dễ gần bằng Qt, thì wxWidgets là một lựa chọn không tồi. Nó có thể dùng với C++, Javascript, Python và vài ngôn ngữ khác. Đây cũng là công cụ tôi dùng chủ yếu từ năm 2003 tới nay và đã giúp kiếm được khá nhiều tiền. Mặc dù những cái gì nho nhỏ, mở thì chuyển dần sang Qt (từ cuối năm 2005) cho đơn giản, nhưng sẽ không bỏ hẳn wxWidgets, ít nhất là trong tương lai trung bình, tương lai xa thì không tính.

              Điều thú vị nhất của wxWidgets theo quan điểm cá nhân tôi là có thể phát triển phần mềm hoàn toàn trên nền Linux, sau đó có thể cross-compile thành chương trình cho Windows, Mac ... mà không cần cái đặt các hệ điều hành này. Thử nghiệm thì dùng Wine chạy mô phỏng. Trong khi đó các thư viện khác thường yêu cầu phải biên dịch trên nền chính các hệ điều hành sẽ triển khai.
              Phần mềm tự do hoặc không dùng máy tính nữa !.

              Comment


              • #8
                Nguyên văn bởi bqviet Xem bài viết
                Ngay cả khi đã chọn đúng công cụ, sau mỗi 5 năm vẫn nên xem xét lại công cụ của mình và so sánh với các công cụ xung quanh: ưu thế nào, nhược ra sao, xu hướng thiên hạ là gì ... Chẳng có gì là nhất thành bất biến cả. Mọi việc đều thay đổi là lẽ đương nhiên.
                Nhớ chuyện ngày xửa ngày xưa:
                - Học lập trình Pascal, C trên DOS, màn hình đen sì nhấp nháy, thằng nào viết được mấy cái đồ họa lòe loẹt: Phục lăn
                - Đến lúc có Win, làm giao diện dễ như ăn cháo - Dialog, button, menu roèn roẹt: Ta tự phục ta quá pro
                - Đem triển khai sản phẩm, thấy một đống các sản phẩm cùng lĩnh vực để ở phòng máy. Lại thấy có mỗi thằng vận hành ngồi rung đùi gõ lệnh trên màn hình đen sì trong khi mình phải đứng cả buổi ở Rack (xài Win mà). Ôi thấy chúng nó pro làm sao
                - Lại quay về màn hình đen huyền ảo, cũng ngồi remote, cũng gõ lệnh, Tab để autocompleted, kết quả hiện ra màu sắc hài hòa, bảng kẻ thẳng tưng, số liệu thay đổi nhấp nháy - Người xưa vỗ vai: Chú khá thật => sướng
                - Quay sang hỏi thăm dạo này anh có gì mới? Trả lời: Giờ anh ít phải gõ lệnh nữa rồi chú ạ, kéo thả ngay trên browser rồi. Thực tế thì nó vẫn là giao diện ấy, nhưng mình có thể tùy biến webUI để xài browser "thêm bớt sửa xóa gộp" các thao tác lại cho ... nhàn

                Vậy đấy, công nghệ thay đổi hàng ngày mà ta không nắm bắt kịp, không đổi mới, không lựa chọn hợp lý thì suốt ngày "đi tắt đón đầu" rồi lạc đường - lại cố tìm đường mới đi tắt đón đầu ...
                Some rights reserved!

                Comment


                • #9
                  Nguyên văn bởi SongLuan Xem bài viết

                  Mấy năm sau đó, cứ cái gì cũng VB, từ cổng Comm, CSDL đơn giả, lưu trữ (Excel).... Lúc đó, xã hội mấy anh biết đến chữ "bản quyền trí tuệ"?

                  Rồi đến khi mình lớn hơn một chút, làm những việc lớn hơn một chút (so với mấy cái đồ án vớ vẩn), và phong trào nguồn mở rộng lên, tự cảm thấy phải có sự thay đổi. Lúc này phải chọn lại công cụ, học lại từ đầu, để có thể làm được những việc có tính ứng dụng một chút.


                  Dùng VB tiếp thì sao? *****? Hay bỏ một núi tiền để trả bản quyền cho một công cụ không dùng thường xuyên cho lắm? Và khi bán một gói ứng dụng nào đó thì sao? Chẵng lẽ lại bán một thứ làm ra từ đồ dùng chùa?


                  Cách giải quyết thỏa đáng nhất là dùng những công cụ mở, lại phải học từ đầu, như khi xưa học VB ấy. Có mất gì đâu? Mất rất nhiều thời gian. Mỗi đêm thức thêm 2h, chắc ổn.
                  Hiện tại micosoft có cung cấp bản Express (Free, có thể dùng mục đích thương mại nhưng hạn chế 1 số tính năng so với bản Standard, Pro, Team). Có thể nói những Project nhỏ thì bản này hoàn toàn phù hợp.

                  Mình nghĩ đối với dân điện tử thì ý tưởng quan trọng hơn, còn việc chọn ngôn ngữ nào việc chuyển đổi chỉ mất 1 thời gian ngắn.

                  Comment

                  Về tác giả

                  Collapse

                  SongLuan Tìm hiểu thêm về SongLuan

                  Bài viết mới nhất

                  Collapse

                  Đang tải...
                  X