PDA

View Full Version : การเขียนโปรแกรมขึ้นอยู่อัลกอลิทึ่มในการคิดมากกว่าภาษาของโปรแกรมที่นำมาใช้



skyline_2523
14-08-2008, 02:23 PM
การเขียนโปรแกรมขึ้นอยู่อัลกอลิทึ่มในการคิดมากกว่าภาษาของโปรแกรมที่นำมาใช้

เพื่อเป็นการยืนยันว่าการเขียนโปรแกรมอย่าไปยึดเรื่องภาษาโปรแกรม ดังนั้นมาร่วมกันเขียนโปรแกรมจากตัวอย่าง ๆ เดียวกัน ด้วยหลาย ๆ ภาษาดีกว่าไหมครับ
เลือกใช้ภาษาโปรแกรมได้ตามถนัดเลยนะครับ

ผมขอตั้งโจทย์ดังนี้ละกันครับ

- เขียนโปรแกรมค้นหา *.* ทุก ๆ Folder และ Sub Folder ใน Drive c:\ Windows


ผมขอเริ่มที่ VB.NET ละกัน

ทำการ Imports System.IO ไว้บนหัวบรรทัดแรกของโปรแกรมก่อนนะครับ
' โปรแกรมหลัก
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
DisplayFiles("c:\Windows")
End Sub

' สร้างโปรแกรมย่อย DisplayFiles ขึ้นมาเพื่อค้นหาไฟล์
Private Sub DisplayFiles(ByVal DirPath As String)
Dim FileList As String() = Directory.GetFiles(DirPath)
Dim DirList As String() = Directory.GetDirectories(DirPath)
Dim FileName As String
For Each FileName In FileList
ListBox1.Items.Add(FileName) 'แสดงผลที่ค้นหาได้บน Control ListBox
Next
Dim DirectoryName As String
For Each DirectoryName In DirList
DisplayFiles(DirectoryName)
Next
End Sub

neoclassic
14-08-2008, 05:44 PM
MASM



.586
.model flat, stdcall
option casemap:none


include c:\masm32\include\windows.inc
include c:\masm32\include\user32.inc
include c:\masm32\include\kernel32.inc
include c:\masm32\include\masm32.inc

includelib c:\masm32\lib\kernel32.lib
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\masm32.lib



.DATA

MsgBoxCaption db "Find Dir",0
szWild byte '*', 0
szCrLf byte 13, 10, 0
szDir db "c:\",0

.CODE



ListDiR proc Root:dword
local Search:WIN32_FIND_DATA
local szDirs[2048]:byte
local Find:dword

invoke lstrlen, Root
inc eax
invoke lstrcpyn, addr szDirs, Root, eax
invoke lstrcat, addr szDirs, addr szWild

invoke FindFirstFile, addr szDirs, addr Search
.if eax == -1
ret
.endif
mov Find, eax

.repeat
mov eax,Search.dwFileAttributes
and eax, FILE_ATTRIBUTE_DIRECTORY

.if eax == FILE_ATTRIBUTE_DIRECTORY
invoke szMultiCat, 2,addr szDirs,addr Search.cFileName,addr szCrLf
.endif

invoke lstrlen, addr szDirs
invoke FindNextFile, Find, addr Search
.until eax == FALSE

invoke MessageBox, NULL,addr szDirs, addr MsgBoxCaption, 0

invoke FindClose,Find

ret
ListDiR endp


Start:
invoke ListDiR,addr szDir
invoke ExitProcess,0

ret
end Start[/b]

NineEx
23-09-2008, 09:58 PM
ในความคิดของผม ผมก็เห็นตามคุณส่วนหนึ่งน่ะครับ

แต่ในบางครั้งการเลือกภาษาให้เหมาะกับงาน มันก็เป็นเรื่องที่ไม่ควรมองข้าม

ถามว่า เราจะใช้ VB ดี หรือเราจะใช้ C++ ดี คงไม่มีใครฟันธงได้ว่าภาษาไหนดีกว่าภาษาไหนไปทั้งหมด

แต่ถ้าเราเขียนเป็นหลายๆภาษาแล้ว ก็จะทำให้เราเลือกภาษาให้เหมาะกับงานที่เราจะทำได้

สมมุติมีโปรเจ็คอยู่ หากเราต้องเร่งส่ง เราก็ควรเลือกใช้ VB เพราะคงไม่มีใครปฏิเสธว่า VB นั้นได้งานมากกว่าภาษาอื่นในเวลาที่เท่ากัน

แต่หากเราต้องการความเร็วในการประมวลผล โดยไม่คำนึงถึงระยะเวลาที่เราจะส่งงานมากนัก ก็คงไม่มีใครปฏิเสธอีกว่า C++ ก็เหนือกว่า VB อยู่พอสมควรในเรื่องความเร็วในการประมวลผล

จะว่าการเลือกภาษานั้นไม่จำเป็นก็ดูไม่ค่อยถูกนัก เพราะแต่ละภาษาก็ดีกันคนละแบบ ถ้าเราเขียนเป็นหลายภาษาและเลือกภาษาให้เหมาะกับงานที่เราจะทำ ก็เป็นประโยชน์อยู่ไม่น้อยเลยน่ะครับ

skyline_2523
24-09-2008, 05:46 PM
ในฐานะ เจ้าของกระทู้ เห็นด้วยกับการแสดงความเห็นของคุณ NineEx ครับ

retool2
24-09-2008, 10:22 PM
ผมคิดแบบนี้ครับ
1. ความเร็วของโปรแกรมที่จะทำงานนั้นขึ้นอยู่กับ algorithm และภาษาครับ
เพราะว่า algorithm ที่ดีย่อมหมายถึง code ที่สั้นน ทำให้ compiler ประมวลผลได้เร็วกว่า
ยกตัวอย่างเช่น algorithm ในการหาค่า prime หรือจำนวนเฉพาะ เพิ่มเติมดูได้ที่
http://en.wikipedia.org/wiki/Prime_number ในส่วน Primality tests
ส่วนภาษาที่ใช้ยิ่งใกล้เคียง machine language มากเท่าไรยิ่งเร็วเท่านั้น
http://shootout.alioth.debian.org/gp4/benc...ll&lang=all (http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all)
2. ความเร็วของการเขียนโปรแกรมจนเสร็จ(ความเร็วในการเขียนเท่ากันทุกภาษา) ขึ้นกับ ภาษาของโปรแกรม
เช่นตัวอย่างจากภาษาที่ใช้ ไม่กี่บรรทัด เขียนเสร็จได้ไว
3. ส่วน editor นั้นก็ช่วยเพิ่มความเร็วในการเขียนอีกต่อหนึ่ง เพราะว่ามีตัวช่วยต่างๆ
4. ภาษากันการใช้งานมีส่วนอย่างมาก เช่น web programming, game, window gui ก็ใช้ภาษาต่างกันไป

ขอแจมด้วยภาษาพื้นฐานเลยแล้วกันครับ ถ้าเกิดว่าใช้บน windows หรือ dos
DOS batch ครับ

dir /s c:\windows > list.txt

Mek524
25-09-2008, 02:24 PM
เห็นด้วยกับความคิดของทุกท่านเลยครับ :)
โดยส่วนตัวผมแล้ว จาก Exp เท่าที่มี ทำให้เห็นว่า สุดท้ายแล้วขึ้นอยู่กับงานครับ มีอยู่ช่วงเคยพยายามศึกษาหาความรู้เิพิ่มเกี่ยวกับ Algorithm
แต่พอได้รับงานมาทำ ปรากฏว่าน้อยมากเลยที่จะได้ใช้ Algorithm ที่ไปศึกษามา ส่วนใหญ่ก็จะเป็นแค่คำสั่งทั่วไป หรือไม่ก็มี tool ให้ใช้เลย
(หรือเป็นเพราะผม ประยุกต์ใช้ไม่เป็นก็ไม่รู้ <_< )

อ้างอิงเพิ่มเติมจากคุณ retool2 นะครับ กรณีถ้าอยากรู้ว่าใช้เวลาไปเท่าไรครับ
** ส่วนตัวเห็นด้วยกับคุณ retool2 มากมาย ทั้งนี้ทั้งนั้น ขึ้นอยู่กับ Exp ของคนที่ได้รับงานมาทำด้วย อย่างกรณีโจทย์ตามตัวอย่าง ถ้าเป็นคนรุ่นใหม่ๆหน่อยไม่ค่อยรู้จัก command line พวกนี้ ก็คงคิดไม่ออก คงไปหาวิธีเขียนโปรแกรมเอา :blink: ทั้งที่มี tool หรือภาษาง่ายๆ อย่างนี้ไว้ให้ใช้อยุ่แล้ว :D



@echo off
echo Start process := %DATE%:%TIME% > C:\list.txt
dir/s c:\windows >> C:\list.txt
echo Process end := %DATE%:%TIME% >> C:\list.txt
[/b]

proceeds
13-10-2008, 05:31 PM
ในความคิดของผม ผมก็เห็นตามคุณส่วนหนึ่งน่ะครับ

แต่ในบางครั้งการเลือกภาษาให้เหมาะกับงาน มันก็เป็นเรื่องที่ไม่ควรมองข้าม

ถามว่า เราจะใช้ VB ดี หรือเราจะใช้ C++ ดี คงไม่มีใครฟันธงได้ว่าภาษาไหนดีกว่าภาษาไหนไปทั้งหมด

แต่ถ้าเราเขียนเป็นหลายๆภาษาแล้ว ก็จะทำให้เราเลือกภาษาให้เหมาะกับงานที่เราจะทำได้

สมมุติมีโปรเจ็คอยู่ หากเราต้องเร่งส่ง เราก็ควรเลือกใช้ VB เพราะคงไม่มีใครปฏิเสธว่า VB นั้นได้งานมากกว่าภาษาอื่นในเวลาที่เท่ากัน

แต่หากเราต้องการความเร็วในการประมวลผล โดยไม่คำนึงถึงระยะเวลาที่เราจะส่งงานมากนัก ก็คงไม่มีใครปฏิเสธอีกว่า C++ ก็เหนือกว่า VB อยู่พอสมควรในเรื่องความเร็วในการประมวลผล

จะว่าการเลือกภาษานั้นไม่จำเป็นก็ดูไม่ค่อยถูกนัก เพราะแต่ละภาษาก็ดีกันคนละแบบ ถ้าเราเขียนเป็นหลายภาษาและเลือกภาษาให้เหมาะกับงานที่เราจะทำ ก็เป็นประโยชน์อยู่ไม่น้อยเลยน่ะครับ
[/b]

เห็นด้วยกับข้อความนี้ครับ แต่อีกอย่างที่อยากจะเพิ่มติมคือ ผมเรียนวิทยาการคอมพิวเตอร์อะ
ก่อนเรียนเขียนโปรแกรมได้บ้าง แต่ก็ไม่สามารถที่จะดัดแปลงได้ 100 %
แล้วเมื่อเข้าเรียน ได้เรียนรุ้ถึงหลักการทำงานของคอมพิวเตอร์ ทำให้รุ้ว่าต้องสั่งทุกอย่าง
ทำให้เมื่อเขียนโปรแกรมเราคิดมากขึ้นและรอบคอมขึ้น
และเมื่อเรียนอัลกอลิทึ่มทำให้เริ่มคิดออกว่าจะทำอะไรก่อนอะไรหลัง
แล้วทีนี้เวลาเห็นโปรแกรมแบบไหนก็นึกออกว่าน่าจะทำแบบไหนโดยยังไม่ได้คิดถึงว่าจะใช้ภาษาอะไร
เมื่อได้ของเขตแล้วถึงจะคิดว่าใช้ภาษาอะไรดีที่จะได้งานที่มีทั้งคุณภาพและความเร็ว