Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Sunday, August 17, 2008

ChinesePython: เขียนโปรแกรมด้วยภาษาจีน

เคยถามเพื่อนมั้ย? ว่า นายเขียนโปรแกรมภาษาอะไรอ่ะ?
แล้วโดนตอบกลับมาว่า "ภาษาอังกฤษ" (ปกติ อาจจะตอบกันว่า C, C#, Python, Java, ...)

ตอนนี้เตรียมเจอคำตอบใหม่ได้แล้ว.... เพื่อนคนนั้นอาจตอบว่า "ภาษาจีน" แทน !?!

วันนี้นั่งๆ อ่าน wikipedia เรื่อง Programming Language แล้วไปเจอบทความ Non-English-based programming languages เปิดๆ ไปเจอรายชื่อภาษาที่ไม่ได้ใช้ภาษาอังกฤษเป็น keyword ในการเขียนโปรแกรม

หนี่งในนั้นคือ ChinesePython.... มันคืออะไร? มันก็คือ ภาษา Python ที่เรารู้จักกันดีแต่โดนแปล keyword ต่างๆ คำสั่งต่างๆ ให้เป็นภาษาจีนให้หมด !?!

สาเหตุที่คนทำ แปล Python เป็น ChinesePython ขึ้นมา เพราะมองเห็นว่า การเรียนรู้วิธีการเขียนโปรแกรม (basic computer programming concepts) นั้นไม่ยาก แต่มันยากสำหรับนักเรียนชาวจีนบางคนเพราะมีอุปสรรคทางด้านภาษาอังกฤษ กว่าจะเริ่มเรียนรู้การเขียนโปรแกรมได้ก็ต้องเรียนรู้ภาษาอังกฤษก่อน (ที่มา)

ลองมาดูตัวอย่างโปรแกรม ภาษา ChinesePython เทียบกับ Python ดีกว่า โปรแกรมต่อไปนี้ทำหน้าที่แปลง \n\r เป็น \n


import sys
filenames = sys.argv[1:]

def fixline(filename):
text = open(filename).read()
text = text.replace('\n\r','\n')
return text

for file in filenames:
print fixline(file)
载入 系统
文件名 = 系统.参数[1:]

定义 修正行尾(文件):
内文 = 打开(文件名).读入()
内文 = 内文.替换('\n\r','\n')
传回 内文

取 文件 自 文件名:
写 修正行尾(文件)
ไหนๆ ลองเขียน ChinesePython บ้าง (ลอง print "Hello World" ดู)
> 写 "หนีเห่า..."

ไม่แน่...ต่อไปถ้าเกิดอยากให้เด็กไทยหัดเขียนโปรแกรมโดยไม่มีอุปสรรคทางภาษา อาจต้องแปล Python เป็น ThaiPython (ใครสนใจจะเขียนภาษานี้มั้ยครับ)

ลองนึกดูเล่นๆ (โปรแกรมคำนวณค่าเฉลี่ย)
ล = [3.0, 1.5, 2.0] #  ล ลำดับคะแนน
ร = 0.0 # ร ผลรวม
สำหรับ ค ใน ล:
ร += ค
ร /= ขนาด(ล)
พิมพ์ "ค่าเฉลี่ย ", ร


น่าสนใจมะ?

Thursday, March 22, 2007

Positive Slope และ Negative Slope บนจอคอมฯ


เฮอๆ นั่งโง่อยู่ตั้งนาน เขียนโปรแกรมหาความชันเส้นตรงแล้วทำไมค่าที่ได้มันไม่ถูกต้อง
ผมก็นึกถึงเส้นตรงตอนที่เรียนในชั้นเรียน เฮ้อ.... เส้นแบบสีแดงในภาพน่าจะเป็น Positive Slope [ค่า Slope เป็นบวก จากสูตร slope = (y2-y1)/(x2-x1) ] แต่เอ๊ ทำไมโปรแกรมถึงคำนวณไม่ถูกซักที

ในที่สุดก็คิดออกว่า Y บนจอคอมฯ จะเพิ่มขึ้นจากบนลงล่าง ซึ่งตรงข้ามกับแกน Y ปกติที่ใช้กันจนชิน

- -" อ้อ....เมื่อวัตถุตกลงด้วยความเร่ง g ความเร่งมีค่าเป็น + (เฉพาะบนจอคอมฯ)นะครับ

Friday, March 09, 2007

SharpDevelop 2.1 น่าใช้มากๆ

ก่อนหน้านี้เคยดาวน์โหลด SharpDevelop รุ่นแรกๆ สมัย .NET 1.0 มาลองใช้
ปรากฏว่ายังไม่ค่อยมี Feature อะไรเท่าไหร่เลย

ตอนนี้มาดูอีกที ... หู ทำไมดูใกล้เคียงกับ Visual Studio .NET 2005 จริงๆ แล้ว
น่าใช้ๆ กำลังตัดสินใจระหว่างพวก Visual Studio Express กับ SharpDevelop ว่าจะลงตัวไหนดี

Wednesday, January 24, 2007

Unsafe ใน C#: ความเร็วแตกต่างกันอย่างสิ้นเชิง

เขียนโปรแกรมแปลงภาพสีเป็น GrayScale เขียนโค้ดแบบ unsafe ดังนี้

byte* p = (byte*)(void*)Scan0;
for (int y = 0; y < Image.height; y++, p+= nOffset, h += gOffset)
{
for (int x = 0; x < Image.Width; x++, p+=3, h++)
{
*h = (byte)(0.299 * p[2] + 0.587 * p[1] + 0.114 * p[0]);
}
}


ใช้เวลารัน นาน แบบเห็นได้ชัดเจน แต่พอเปลี่ยนโค้ดเป็นแบบนี้

byte* p = (byte*)(void*)Scan0;
int height = Image.height;
int width = Image.width;
for (int y = 0; y < height; y++, p+= nOffset, h += gOffset)
{
for (int x = 0; x < width; x++, p+=3, h++)
{
*h = (byte)(0.299 * p[2] + 0.587 * p[1] + 0.114 * p[0]);
}
}

ปรากฏว่าเห็นความแตกต่างเรื่องความเร็วได้อย่างชัดเจน (อันหลังเร็วกว่าอันแรกอย่างแรง)
- -"

Monday, October 02, 2006

เพิ่งจะรู้ว่าเขาเรียกว่า CAPTCHA

A CAPTCHA (an acronym for "Completely Automated Public Turing test to tell Computers and Humans Apart", trademarked by Carnegie Mellon University) is a type of challenge-response test used in computing to determine whether or not the user is human.

ref : wikipedia.org

Tuesday, September 12, 2006

Compile FileZilla Server 0.9.18 สำเร็จแล้ว!

เฮอๆ
compile ตัว server สำเร็จ แต่ยังไม่ได้ลอง compile ตัว interface

/wd 4430

ยังสงสัยว่าทำไมต้องเพิ่ม option ข้างบนใน compiler option ทำให้สามารถ compile โค้ดได้ เฮอๆ
สงสัยจะเป็น switch เกี่ยวกับ backward compatibility มั้ง - -"

สรุปสิ่งที่ทำเพื่อ compile filezilla คือ
ลง vc++ 2005 express, platform sdk, zlib

อ้อ ต้องลบ odbc32.lib กับ odbc อีกอัน ออกจาก linker ด้วย - -"

ไม่รู้ว่าตัว server ที่ compile ออกมาได้เนี่ยจะ work รึเปล่า - -"

Monday, August 21, 2006

เย้ Dev-C++ & DevIL

ในที่สุดก็งง อยู่หลายนาทีกว่าจะทำได้

1. โหลด DevIL จาก devpaks.org มาติดตั้งก่อน
2. สร้าง project ใหม่
3. เลือกเมนู Project->Project Options แล้วเลือก Parameters
4. คลิกปุ่ม Add object or library
5. เลือก libdevil.a, libil.a, libilu.a (มั่วๆ นะเนี่ย)

และโปรแกรมแรกของเราต้องอย่าลืม copy ไฟล์
devil.dll จาก C:\Dev-Cpp\dlls ไปใส่ไว้ใน c:\windows\sytem

ครับ

Thursday, July 06, 2006

php4+mysql5 บน dapper

phpmyadmin กับ mysql ก็ไม่มีปัญหาภาษาไทย
ใช้ encoding tis-620 ได้

แต่พอเขียนเว็บมาติดต่อกับ mysql กลับมีปัญหา
ได้ตัวอักษร ???????????? มาตรึมเลย

ตอนแรกคิดว่าต้องใช้ utf-8 ซะจริงๆ แล้ว
แต่แล้วก็มีทางแก้จาก phoenixsnake โดยให้เรียก query ตัวนึงก่อน

mysql_query("set names 'tis620';");

จะช่วยแก้ปัญหาเรื่อง encoding ได้
แต่แล้วเราก็ลบ mysql5 แล้วลง mysql4 แทน เพราะ version เดียวกับ server
(แก้ปัญหาด้วยวิธีที่ง่ายกว่า อิๆ)