This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

Hiển thị các bài đăng có nhãn lap-trinh. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn lap-trinh. Hiển thị tất cả bài đăng

Thứ Hai, 4 tháng 1, 2016

Ngôn ngữ của fb

Facebook giới thiệu ngôn ngữ lập trình "Hack" giúp viết phần mềm nhanh hơn

Thảo luận trong 'Đám mây, Dịch vụ trực tuyến' bắt đầu bởi Duy Luân, 20/3/14. Trả lời: 89, Xem: 15965.
Duy Luân

Không có gì!

Tham gia:
16/2/08
Được thích:
146,877
Facebook_Hack. ​

Facebook mới đây đã giới thiệu một ngôn ngữ lập trình mới có khả năng đẩy nhanh tốc độ viết cũng như kiểm tra các phần mềm. Với tên gọi Hack, ngôn ngữ đã được nội bộ Facebook sử dụng hơn một năm nay và bây giờ hãng đưa nó thành một chuẩn mở cho mọi người cùng xài. Được biết Hack là sự kết hợp giữa các yếu tố của ngôn ngữ lập trình tĩnh như C với những ngôn ngữ động như PHP. Với ngôn ngữ tĩnh, trình biên tập sẽ giúp bạn biết được nhiều lỗi trong mã nguồn trước khi chạy nên an toàn và đảm bảo hơn, còn với những ngôn ngữ động thì bạn phải chạy phần mềm lên rồi mới biết mình gặp lỗi gì mặc dù nó cho phép chúng ta viết code nhanh hơn.

Vậy là Hack ra đời như một sự dung hòa giữa cả hai yếu tố nói trên. Nó sẽ báo cho bạn biết khi nào mã nguồn của bạn bị viết sai thông qua một server trong máy nội bộ (như hình ảnh đầu bài), chúng ta không cần phải đưa code lên server chạy như PHP rồi dò lỗi. Trong quá trình viết, tag mà bạn thường dùng được thay bằng tag . Và nếu bạn đã tạo ra những file PHP thì môi trường chạy với tên gọi "HHVM" vẫn có thể biên dịch cả ngôn ngữ PHP lẫn Hack nên sẽ không lo về vấn đề tương thích.

Bryan O’Sullivan, trưởng nhóm Hack, cho biết rằng bản thân Facebook được viết dựa trên PHP, nhưng khi nhiều lập trình viên của công ty cùng làm việc trên nhiều dựa án thì việc tìm ra lỗi trước khi chạy dần trở nên cần thiết hơn. Hack sẽ giúp rút ngắn thời gian, tiết kiệm chi phí viết phần mềm, bất kể đó là một dự án lớn hay nhỏ. Tuy nhiên, O’Sullivan nhấn mạnh rằng Hack sẽ không ảnh hưởng đến tốc độ chạy của mã nguồn (và tốc độ chạy phần mềm nói chung), nó chỉ giúp ích cho quá trình phát triển mà thôi.

perl căn bản

Perl: Bài 2 – Cú pháp Perl cơ bản - Python Viet Nam Center

ngôn ngữ Lua

Cơ bản về ngôn ngữ LUA | Corona Việt

Cơ bản về ngôn ngữ LUA

Thảo luận trong 'Tutorials và Thủ thuật lập trình' bắt đầu bởi admin, 18/4/14.

  1. Administrator
    admin
    Nhân viên CoronaViet
    Tham gia ngày:
    16/1/14
    Bài viết:
    278
    Đã được thích:
    80
    Lua (tiếng Bồ Đào Nha: Mặt Trăng) là một ngôn ngữ lập trình thông dịch với đặc điểm nhỏ gọn, đa nền tảng. Lua được phát triển từ C và hệ thống các API theo hướng đơn giản hóa.
    [​IMG]
    Lịch sử
    Lua được nhóm chuyên viên khoa học máy tính gồm Roberto Ierusalimschy, Waldermar Celes, L.H. Figueiredo, tại đại học PUC-RIO, Brasil phát triển vào năm 1993. Phát sinh từ nhu cầu có một ngôn ngữ thích hợp để viết những tập tin cấu hình cho các phần mềm chuyên dụng trong ngành dầu khí, các tác giả đã xem xét ngôn ngữ hiện dùng lúc bấy giờ là SOL (Simple Object Language - ngôn ngữ đối tượng đơn giản), để tạo ra một ngôn ngữ có tính năng diễn đạt tốt hơn. Ngôn ngữ này được đặt tên là Lua, có nghĩa là Mặt Trăng theo tiếng Bồ Đào Nha (bản thân Sol có nghĩa là Mặt trời).

    Cú pháp

    Các bó lệnh (chunk)
    Mặc dù các câu lệnh nên được viết riêng rẽ trên từng dòng, nhưng thực ra Lua có khái niệm bó câu lệnh theo đó có thể viết nhiều câu lệnh trên cùng một dòng, và không nhất thiết có dấu phân cách (; hoặc ,).

    -- đây là dòng chú thích
    a = 1
    b = 2; c = 3 -- phân cách bằng ;
    d = 4, e = 5 -- phân cách bằng ,
    f = 6 g = 7 -- cũng hợp lệ!

    Cấu trúc
    Các cấu trúc như rẽ nhánh, lặp đều được kết thúc bằng từ khóa dùng chung là end.

    Mã (Lua):
    for i = 1,10 do
      s = s + i    -- không cần khởi tạo s, mặc định s bằng 0
    end

    repeat
      s = s - 1
    until s < -10

    function gttd(x)
      if x > 0 then
          return(x)
      else
          return(-x)
      end
    end
    Hàm
    Các hàm trong Lua được gọi với cặp ngoặc () truyền thống.

    Mã (Lua):
    print(2+3)
    print("Hello World")
    Ngoài ra còn có cú pháp đặc biệt cho phép bỏ cặp ngoặc đơn trong trường hợp tham số có dạng chuỗi hoặc table:

    Mã (Lua):
    print "Hello World"
    Hàm là kiểu dữ liệu cơ bản và có thể gán vào các biến:

    Mã (Lua):
    gttd = math.abs
    print(gttd(-5.7))
    Phương thức
    Khi gọi một phương thức có thể sử dụng theo cách truyền thống với dấu chấm hoặc dùng dấu hai chấm. Trong trường hợp thứ hai thì ta lược bỏ đối tượng gọi phương thức trong danh sách tham số:

    Mã (Lua):
    aFile = io.open("tenfile", "r") -- đọc file sử dụng phương thức open
    -- với read là một phương thức của đối tượng aFile trong lớp io
    a = io.read(aFile, "*n")        -- đọc số a từ file aFile
    a = aFile:read("*n")            -- cách 2
    Kiểu table
    Mã (Lua):
    tuoi = {Britney=27, Andy=26}    -- một kiểu database
    print(tuoi["Britney"], tuoi["Andy"])
    print(tuoi.Britney, tuoi.Andy)    -- syntactic sugar

    -- dãy số chính phương
    day = {[1] = 1, [2] = 4}    -- tương đương với dòng lệnh dưới ...
    day = {1, 4}                -- tự động gán các khóa là số nguyên
    day[3] = 9
    for i = 4,10 do
      day = i * i
    end

    print(day)              -- mã hiệu của table day
    print(unpack(day))      -- các phần tử trong table day



      • Tạo các key trong table rất đơn giản
      • Thay đổi cấu trúc và chỉ mục của table đã được tạo trước.
      • Có thể sử dụng table như 1 mảng
      • Sử dụng vòng lặp trong table
      • Viết chương trình hướng đối tượng với table.
      • Xây dựng những cấu trúc dữ liệu từ table.
      • Những phương thức được định nghĩa sẳn trên table:
    o Table.insert: thêm một phần tử vào table Ví dụ:

    Mã (Lua):
    T = {}
      table.insert(T, “a”)
      table.insert(T, “b”)
      table.insert(T, “c”)
      print(CommaSeparate(T))

    a, b, c

    o Table.sort: sắp xếp các phần tử trong 1 table Ví dụ sử dụng chức năng sort:

    Names =  {“Scarlatti”, “Telemann”, “Corelli”, “Purcell”,
                  “Vivaldi”,  “Handel”, “Bach”}
      table.sort(Names)
      for I, Name in ipairs(Names) do
                  print(I,  Name)
      end
    Trích:
    1 Bach
    2 Corelli
    3 Handel
    4 Purcell
    5 Scarlatti
    6 Telemann
    7 Vivaldi

    o Table.concat: nối các phần tử trong table thành một chuổi. Ví dụ:

    Mã (Lua):
    print(table.concat({“a”, “bc”, “d”}))
    Abcd

    o Table.remove: Remove một phần tử trong table. Ví dụ:

    Mã (Lua):
    T = {}
      table.insert(T, “a”)
      table.insert(T, “b”)
      table.insert(T, “c”)
      print(CommaSeparate(T))
      a, b, c
      print(table.remove(T))
      c
      print(CommaSeparate(T))
      a, b
      print(table.remove(T))
      b
      print(CommaSeparate(T))
      a
      print(table.remove(T))
      a

    -- T is now empty again:
    print(#T)
    o Table.maxn: tìm trên mỗi cặp key – value trong một table và trả về key tương ứng với value lớn nhất hoặc trả về 0 nếu value không phải là số dương. Ví dụ:
    Mã (Lua):
    print(table.maxn({“a”, nil, nil, “c”}))
      4
      print(table.maxn({[1.5] = true}))
      1.5
      print(table.maxn({[ì1.5î] = true}))
      0
    Last edited: 18/4/14
    Nhân, Lanh and Khúc Vương like this.
  2. New Member
    culuaba
    Tham gia ngày:
    16/10/14
    Bài viết:
    2
    Đã được thích:
    0
    ai có sách hay tai lieu gi không cho t xin với, còn amator lám chưa biết gì
  3. New Member
    Toản
    Tham gia ngày:
    31/5/15
    Bài viết:
    3
    Đã được thích:
    0
    hoc ngôn ngử lua trên mạng thôi à...có ai có bí quyết gì k/

Chia sẻ trang này

Google Go: ngông ngữ của google

Hướng dẫn nhanh lập trình với Google Go - PC World VN

python 1

Lập trình web với Python (3) — Python cho người Việt

Python cho người Việt

Python cho người Việt

Lập trình web với Python (3)

written by Nguyễn Thành Nam, on Jan 28, 2010 4:52:25 PM.

Sau khi đã cài đặt máy chủ web, và Python ở hai bài trước, trong bài này chúng ta sẽ bước vào thế giới lập trình web với mô hình đơn giản nhất, mô hình CGI.

CGI là viết tắt của Common Gateway Interface, dịch chính xác là giao tiếp cổng chung. Giao thức này được sinh ra để chuẩn hóa (hay xác định rõ) cách thức một máy chủ web giao phó việc tạo trang web cho các ứng dụng console (các ứng dụng nhận dữ liệu từ bộ nhập chuẩn và xuất ra bộ xuất chuẩn). Các ứng dụng này được gọi là các ứng dụng CGI, hay kịch bản CGI vì chúng thường được viết bằng ngôn ngữ kịch bản, mặc dù chúng cũng có thể được viết bằng các ngôn ngữ khác như C, Java.

Scala

Tìm hiểu về ngôn ngữ Scala | VIBLO

There's more to see...

Tìm hiểu về ngôn ngữ Scala

  1. Giới thiệu Scala

    • Ngôn ngữ Scala (viết tắt cho scalable language) là 1 ngôn ngữ được thiết kế để có khả năng mở rộng tùy theo nhu cầu của người sử dụng. Ngôn ngữ Scala được sử dụng trong nhiều lĩnh vực , qui mô, từ những đoạn script nhỏ cho đến những hệ thống lớn.

    • Scala chạy trên nền máy ảo Java và nó tương thích hoàn toàn với Java. Ngoài ra nó cũng có thể chạy trên .NET, tuy nhiên chưa ổn định.

    • Scala được xây dựng với các tính năng của lập trình hàm và lập trình hướng đối tượng. Sự kết hợp của lập trình hàm và lập trình hướng đối tượng được thể hiện trong nhiều khia cạnh, 2 kiểu lâp trình này bổ sung sức mạnh cho nhau đặc biệt khi hệ thống được mở rộng. Lập trình hàm có thể xây dựng nhanh chóng và dễ dàng những tính năng từ những phần nhỏ trong khi lập trình hướng đối tượng thích hợp để cấu trúc 1 hệ thống lớn.
  2. Một số đặc điểm của ngôn ngữ Scala
    • Cơ động linh hoạt về cú pháp
    • Sở hữu vòng lặp for mạnh mẽ
    • Được thiết kế để phù hợp với cả lập trình hàm cũng như lập trình hướng đối tượng
    • Hệ thống kiểu dữ liệu phong phú và có khả năng mở rộng (định nghĩa thêm method cho kiểu có sẵn)
  3. Cài đặt môi trường

    • Để chạy scala từ chế độ dòng lệnh, download binaries từ link dưới đây:

    http://www.scala-lang.org/download/

    Sau khi giải nén file được download, tại thư mục được giải nén ta có thể khởi động scala interpreter bằng lệnh scala hoặc khởi động scala compiler bằng lệnh scalac

    Để tiện cho việc sử dụng, chúng ta thêm scala và scalac vào path

    Môi trường Biến Giá trị
    Unix $SCALA_HOME /usr/local/share/scala
    $PATH $PATH:$SCALA_HOME/bin
    Windows %SCALA_HOME% c:\Progra~1\Scala
    %PATH% %PATH%;%SCALA_HOME%\bin
  4. Chương trình Hello World đầu tiên

    Chúng ta sẽ viết những dòng code đầu tiên của chương trình Hello World trên Scala

    object HelloWorld {
      def main(args: Array[String]) {
        println(&quot;Hello, world!&quot;)
      }
    }

    Kết quả khi chạy chương trình này trên interpreter như sau:

    hwscala.png

    Ta có thể biên tập code trên editor hoặc IDE, lưu vào 1 file HelloWorld.scala rồi thực hiện compile source code bằng lệnh scalac

    scalac HelloWorld.scala

    Thông thường lệnh scalac sẽ tạo class file vào trong thư mục hiện tại, nhưng ta cũng có thể chỉ định đường dẫn nơi sẽ tạo class file bằng tùy chọn -d

     scalac -d classes_directory HelloWorld.scala

    Sau khi biên dịch xong ta có thể chạy chương trình bằng lệnh scala

    scala HelloWorld

    Ta cũng có thể chỉ định đường dẫn đến class file bằng tùy chọn -classpath hoặc -cp

    scala -cp classes_directory HelloWorld

    Tham số của lệnh scala là 1 top-level object. Nếu object đó kế thừa App thì các lệnh nằm trong object đó sẽ được thực thi. Trong trường hợp còn lại, ta phải thêm method main cho object. Chương trình HelloWorld có thể được viết lại như sau:

    object HelloWorld extends App {
      println(&quot;Hello, world!&quot;)
    }

    Ta cũng có thể viết thêm 1 đoạn shell script để có thể chạy trực tiếp chương trình từ terminal

    #!/bin/sh
    exec scala &quot;$0&quot; &quot;$@&quot;
    !#
    object HelloWorld extends App {
      println(&quot;Hello, world!&quot;)
    }
    HelloWorld.main(args)

    Sau khi lưu đoạn script trên vào 1 file script.sh, bây giờ ta có thể chạy trực tiếp đoạn script trên

    hwscript.png

    Như vậy chúng ta đã chạy thành công chương trình HelloWorld trên Scala. :D

  5. So sánh Scala và Ruby

    Sau khi cài đặt xong môi trường và chạy thử thành công chương trình đầu tiên trên Scala, bây giờ chúng ta có thể tìm hiểu thử những tính năng thú vị của Scala. Những ví dụ dưới đây được thể hiện trong sự đối sánh với ngôn ngữ Ruby, 1 ngôn ngữ được coi là khá gần gũi với Scala

    Cú pháp Scala không cần kết thúc các lệnh if else bằng end. Điều này giúp giảm bớt việc viết liên tục nhiều lần end khi viết các câu lệnh rẽ nhánh hay vòng lặp

    Ruby

    ruby_end.png

    Scala

    scala_end.png

    Scala quy định rõ ràng về kiểu dữ liệu nên một khi đã gán giá trị 1 biến theo kiểu nào đó thì sau đó biến đó chỉ có thể được gán lại với kiểu đã dùng trước đó trong khi trên Ruby biến có thể được gán giá trị là 1 String rồi sau đó lại có thể được gán giá trị là 1 số nguyên

    Ruby

    ruby_style.png

    Scala

    scala_type.png

    Cú pháp của Scala rất linh hoạt cho phép sử dụng dấu chấm (dot) để gọi method giống như Ruby nhưng cũng có thể không cần sử dụng dấu chấm mà thay vào đó là space để thực hiện việc gọi method

    Ruby

    ruby_dot.png

    Scala

    scala_dot.png

    Một trong những điểm thú vị của Scala là vòng lặp for mạnh mẽ, 1 dẫn chứng cho khả năng hỗ trợ lập trình hàm của Scala. Cú pháp vòng lặp for này cho phép sử dụng (pattern guard: 1 biểu thức trả về giá trị true hoặc false đảm bảo chương trình sẽ tiếp tục chạy nếu giá trị trả về là true và ngược lại bỏ qua nếu giá trị trả về là false). Ví dụ dưới đây minh họa việc in ra các số chẵn trong phạm vi từ 1 đến 10 trong ruby và scala. Cách xử lý trong scala là theo hướng lập trình hàm còn trong ruby là theo hướng lập trình hướng thủ tục.

    Với cách tư duy lập trình hướng thủ tục thì vòng lặp sẽ duyệt toàn bộ các số từ 1 đến 10, kiểm tra tính chẵn lẻ và in ra kết quả thích hợp.

    Ruby

    ruby_for.png

    Còn với cách tư duy kiểu lập trình hàm thì ta có thể hiểu đối tượng duyệt của vòng for chỉ là các số chẵn trong phạm vi từ 1 đến 10

    Scala

    scala_for.png

    Trong Ruby chúng ta cũng có thể lập trình theo phong cách lập trình hàm bằng cách sử dụng lệnh select

    Ruby

    ruby_for2.png

    Tuy nhiên cách lập trình này có nhược điểm là khi số phần tử quá lớn thì sẽ cần phải tạo ra object lớn tốn tài nguyên. Do đó có thể thấy Scala hỗ trợ rất mạnh mẽ cho việc lập trình hàm

    Scala hỗ trợ pattern guard cả trong lệnh case. Lấy ví dụ 1 hàm phân loại số nguyên thành số âm, số nguyên dương có 1 chữ số và số nguyên dương có từ 2 chữ số trở lên, trong Ruby do không hỗ trợ range MinusInfinity..0 nên khi kiểm tra khoảng số âm phải dùng lệnh if hoặc sinh ngoại lệ. Trong Scala ta có thể truyền pattern guard vào trong lệnh case giúp cho đoạn code trở nên đồng nhất hơn.

    Scala

    scala_match.png

    Ruby

    ruby_match.png

    Như vậy chúng ta đã cài đặt thành công scala cũng như 1 số tính năng thú vị trên Scala. Do hiểu biết của người viết về Scala còn ít nên bài viết chỉ tập trung tìm hiểu vào 1 số điểm khác biệt độc đáo của ngôn ngữ Scala. Hi vọng bài viết có ích cho những ai muốn bắt tay vào học ngôn ngữ này.

Does this article helpful? Yes (0) No (1)

Add a new comment

You must be logged in to post a comment. Click here to login.
1

Clip

0

Comment

309

Views

Popular posts

Deployment: modularizing web application components Phương 'J' Lê H. -  Feb 26, 2015
The way of fitting web site for supporting smart phone. Hiroaki Ishida -  Mar 03, 2015
Introduction of "The Art of Readable Code" Book (1) Phạm Cẩm Anh -  Mar 11, 2015
APACHE CASSANDRA: ARCHITECTURE AND INSTALLATION. Cuong Le Ngoc -  Mar 13, 2015
Introduction of Maintainable Javascript 4 Phạm Cẩm Anh -  Mar 13, 2015
MULTIPLAYER WITH PHOTON UNITY NETWORKING Phùng Hoàng Bắc -  Mar 13, 2015
Sử dụng sidekiq KhanhHD -  Mar 13, 2015

Related posts

Tóm tắt cú pháp Scala Jkhas
Đệ quy đuôi (Tail Recursive Function) trong Scala Nguyen Cong Thanh
Monad trong Scala Duc Nghiem Xuan
Vòng lặp trong Scala Linh Thanh Nguyen
Lazy evaluation in Scala Cuong Le Ngoc