
仿¥ã
Hacker Newsã§ ãïŒäžèŠéåžžã«ïŒæ°ããã
ooc ãèšèªã«é¢ããæçš¿
ã«åºäŒããŸããã 圌ã¯äžæ¥äžãã¹ãŠã®ãã®ãæãããããã³ã°ãå§ããŸãã-ããã¯éåžžã«è峿·±ãããã§ãã
ãããã£ãŠãã
oocã¯ãã¢ãã³ã§ããªããžã§ã¯ãæåã§ã æ©èœçã«ïŒç¶¿ïŒ ãé«ã¬ãã«ãäœã¬ãã«ãã»ã¯ã·ãŒãªããã°ã©ãã³ã°èšèªã§ãã ã ïŒ
ãŸãã«ããã代衚ããã®
ã¯éçºè
ã§ãããŸããã
ã³ã³ãã€ã«æžã¿ ãã§ããããšãä»ãå ããŸãïŒ
åºæ¬çã«ã
oocã¯ã¬ããŒãžã³ã¬ã¯ã¿ãŒãåãã
Cèšèªã®é«ã¬ãã«èšèª
ãã©ã³ã¹ã¬ãŒã¿ãŒã§ãã
ãããµã€ã蚪åè
ãèšã£ãããã«ãã
Cã®oocã¯Javaã®Scalaã«äŒŒãŠããŸã ãïŒjimbokun
@ HN ïŒã
oocã®å¿
é ã®ãHelloãWorldãïŒ
hello.ooc ïŒ
"Hi, softer world =)" println()
åºåã¯
hello.cããã³
hello.exeã§ãã
oocã³ã³ãã€ã©ãŒã¯ãããcã³ãŒãã«å€æããå©çšå¯èœãª
cã³ã³ãã€ã©ãŒïŒgccãmingwãiccãtinyccïŒã䜿çšããŠhello.exeïŒãŸãã¯./helloïŒãäœæããŸãã
Tinyccã®ãµããŒãã¯å®£èš
ãããŠ
ããŸãããå®éã«ã¯
tinyccèªäœã§C99ã®ãµããŒãã
åŸ
ã£ãŠããŸãïŒäœæè
ã¯åé¿çã
è¬ãããšçŽæããŸãããããŸã æ©èœããŸããïŒããããã£ãŠãããªã匱ã.exeãµã€ãºã確èªããŠããŸãïŒmingwã®gccã¯ä»ã®ãã®ãäœæããŸããïŒã
ãã®ãã
ãèšèªã«ãã§ã«ãããã®ïŒã¯ã©ã¹ããªããžã§ã¯ããå³å¯ãªåä»ããåæšæž¬ïŒ
n := "Beer" length()
ïŒãé£éïŒ
.dothis().dothat()
ïŒãcã©ã€ãã©ãªãšã®äºææ§ãæœè±¡ã¯ã©ã¹ãC ++ã®ãã³ãã¬ãŒãããªã¹ããã¹ããŒã¹ãªã¹ããããã·ã¥ïŒArrayListãSparseListãHashMapïŒã
for (i in list) { ... }
ãC颿°ãšã¯ã©ã¹ã®ã©ãããŒãæŒç®åã®ãªãŒããŒããŒããããªã¢ãŒãã£ãºã ãã³ã¬ã¯ã¿ãŒã¬ããŒãžïŒåæå¯èœïŒãã€ã³ããŒããã¡ã€ã«/ååïŒ.hã¯äžèŠããã ã.hã¯externãšããŠäœ¿çšå¯èœïŒãã¯ããŒãžã£ãŒããšããã§ã«ã®ã³ã³ãã©ã¯ããäŸå€ããªãã¬ã¯ã·ã§ã³ããã¿ãŒã³ãããã³ã°ãç¯å²ãäžé
æŒç®åããã€ã³ãã£ã³ã°ããžã§ããªãã¯ãã³ã«ãŒãã³ãGTKãSDL ãOpenGLãGLUãGLUTãã€ã³ãã£ã³ã°...
åå¿varjag
@ HNãèšã£ãããã«ããããã¯RubyãŠãŒã¶ãŒã«ããåè«ã ãšæããŸãããæ¬æã«ã¯èŠåœãããŸãããããããããã®èšèªã¯å®éã«ååšããŸãã äŸããªã³ã¯ãã€ã³ã¹ããŒã«ãæ°Žäžé害-ã«ããã®äž...
ãã®ä»ã®äŸ
æ©èœ ïŒ
add: func(a, b : Int) -> Int {
a + b
}
楜ãã ïŒ
for (i in 0..10) {
printf( "%d\n" , i)
}
for (i in list) {
printf( "%d\n" , i)
}
ãªã¹ã ïŒ
ints := SparseList<Int> new ()
ints add(13)
lucky := ints get(0)
OOP ïŒ
Vector3f: class {
x, y, z : Float
init: func(=x, =y, =z)
}
oocã¯xãfloatã§ããããšãç¥ã£ãŠããããããã®xã«ä¿åããã ãã§ãªããã¿ã€ããçç¥ã§ããŸãïŒãoocãã§ã¯ããªããžã§ã¯ãã®ã¡ãœãããšããããã£ã®åã®ãã€ã³ãã¯äžèŠã§ãïŒã äžèšã®
C ++ã®é¡äŒŒç©ïŒ
class Vector3f {
float x,y,z;
Vector3f( float x_, float y_, float z_): x(x_), y(y_), z(z_) {};
};
// ( C++ - ).
é£é ïŒ
me := RandomGuy new ()
me eatBreakfast() .drinkCoffee() .yawn() .goBackToBed()
ãã ãããããã®ã¡ãœããã§ãã
ãè¿ã
å¿
èŠã¯ãããŸãã ã
æœè±¡ã¯ã©ã¹ ïŒ
Animal: abstract class {
shout: abstract func
}
Dog: class extends Animal {
shout: func { "Woof, woof!" println() }
}
Cat: class extends Animal {
shout: func { "Meoooww!" println() }
}
ã¬ããŒãžã³ã¬ã¯ã¿ãŒã䜿çšããmalloc ïŒ
myRawArray := gc_malloc(Int size * 100) as Int* // free .
GUIã¢ããªã±ãŒã·ã§ã³ ïŒ
use gtk
import gtk/[Gtk, Window] // acts like: import gtk/Gtk, gtk/Window
exit: extern func
main: func {
w := Window new ( "Hi, world" )
w setUSize(800, 600) .connect( "destroy" , exit) .showAll()
Gtk main()
}
ãã¡ã€ã«ãèªãimport io/FileReader
main: func {
fr := FileReader new ( "/etc/hosts" )
while (fr hasNext())
fr read() print()
}
ã³ã«ãŒãã³ïŒïŒïŒ ïŒã¹ã¿ãã¯ãªãŒããŒãããŒãªãã§1ã€ã®ãµãããã°ã©ã ããå¥ã®ãµãããã°ã©ã ã«ã³ãŒãå®è¡ã転éããïŒïŒ
import coroutine/Coro
firstCoro, secondCoro : Coro
secondTask: func (context: Pointer) {
num := 0
printf( "secondTask created with value %d\n" , (context as Int*) @)
while ( true ) {
printf( "secondTask: %d %d\n" , secondCoro bytesLeftOnStack(), num += 1)
secondCoro switchTo(firstCoro)
}
}
firstTask: func (context: Pointer) {
value := 2
num := 0
printf( "firstTask created with value %d\n" , (context as Int*) @)
secondCoro = Coro new ()
firstCoro startCoro(secondCoro, value &, secondTask)
while ( true ) {
printf( "firstTask: %d %d\n" , firstCoro bytesLeftOnStack(), num += 1)
firstCoro switchTo(secondCoro)
}
}
main: func {
mainCoro := Coro new ()
value := 1
mainCoro initializeMainCoro()
firstCoro = Coro new ()
mainCoro startCoro(firstCoro, value &, firstTask)
}
ãœãŒã¹/ããã°ã«ãŸã ãã£ããã®ããïŒ
atexitãiniparserãfilewriterãlistãmapãstackãosïŒlaunchãsubprocessïŒãregexpãthreadsãi / oãevents ã
GTK / SDL / OpenGL / GLU / GLUTãã€ã³ãã£ã³ã°ããã®ããããã®èšèªã¯éåžžã«ãã»ã¯ã·ãŒãã§ãã æ®å¿µãªããããã¡ããããŸã 湿ã£ãŠããŸãã å€ãã®ééããåé¡ããããŸãããããããªããæå
端ã«äœã¿ãããªãããããã³ã°ã®äžçãžããããã
Oocã€ã³ã¹ããŒã«
äœãå¿
èŠã§ããïŒ
1.
git ïŒé
åžããããããŠã³ããŒãããå¿
èŠããããŸãïŒ
2.
Java JDK 5以é
3. Linuxã®å Žåã¯gccãWindowsã®å Žåã¯
MingW ïŒãªã³ã¯ã¯
mingw.orgã«ã¯ã€ãªãããŸããããããçŸä»£çãªãã«ãã«ãªããŸãããgcc 4ã«è¿œãã€ããå®éã®mingwãå«ãŸããŠããå ŽåããããŸãïŒ
4.
Ant ïŒã·ã¹ãã ããã«ãããmakeããšå
¥åïŒ
JAVA ??? ã³ã³ãã€ã«ããããã¡ã€ã«ã¯Java VMã䜿çšããŸãã ã ooc-> cãã©ã³ã¹ã¬ãŒã¿èªäœã®ã¿ãJavaã䜿çšããŸãïŒééçïŒã ãšã³ããŠãŒã¶ãŒã¯ãã€ãã£ãã³ãŒããåãåããŸããåçŽã«èšããšã.exeã§ãã©ã®ãããªåœ¢åŒã®Javaãå¿
èŠãããŸãããäžèšã®ãã¹ãŠãé
眮ããWindowsã§ã¯
git
ãmingw /
bin
ãjava /
bin
ãant /
bin
ãã©ã«ããŒãPATHã«è¿œå ããŸãïŒLinuxã§ã¯ãyum install / sudo apt-getãã¹ãŠãæ¢ã«æ§æãããŠããŸãïŒã
æ£ããPATHã®ç¢ºèªïŒã³ãã³ãã©ã€ã³ã§ã³ãã³ããgitãããjavacãããantãããgccããé çªã«å®è¡ããŸãã äœããèŠã€ãããªãã£ãå ŽåïŒããã¹ãŸãã¯ãã¡ã€ã«åãæ£ããæå®ãããŠããªããïŒ-ãã®ç¹å®ã®ããã±ãŒãžãå±éãããå Žæãæ¢ããPATHã«ãã¹ã远å ããŸãã
KOïŒPATHã¯ã
Windows + BreakãAdvancedãEnvironment variablesãäžéšãŠã£ã³ããŠã®Changeã§ç€ºãã
ãŸã ã 倿Žãããã³ã«ã[OK]ãã¯ãªãã¯ããŠã³ãã³ãã©ã€ã³ãåèµ·åããå¿
èŠããããŸãã ã»ãã¬ãŒã¿ãŒ ïŒã»ãã³ãã³ïŒã
ã³ãã³ãã©ã€ã³ã«ç§»åããŠãæ¬¡ã®æäœãè¡ããŸãã
git clone git: //github.com/nddrylliog/ooc.git
cd ooc/
ant
ãã¹ãŠãæåããå Žåã
ooc.jar
ãã¡ã€ã«ã
ooc.jar
å ŽæãèŠã€ã
ooc/bin/ooc.jar
ãããã¯ããããã
ooc/bin/ooc.jar
ã§ãã
ïŒWindowsã®äžã§ïŒooc.batãã¡ã€ã«ãäœæããPATHã®ã©ããã«é
眮ããŸãã
java -jar d:\ooc\bin\ooc.jar %*
ïŒããã§ooc.jarãžã®ãã¹ãå
¥åããŸã-äžèšãåç
§ïŒ
Linuxã®å ŽåïŒ
sudo cp utils/ooc /usr/bin/
export OOC_DIST=/home/username/ooc/
/ home / username / ooc /ã«ããŠã³ããŒãããå Žå
hello.ooc
ãäœæã
hello.ooc
ã
main: func {
"Hello world!" println()
}
ä»ç§ãã¡ã¯ïŒ
ooc hello.ooc -r
çæ³çã«ã¯hello.exeãååŸããŸãã ïŒã-rãã¯ãå®è¡ãã§ãããã-nocleanããå®è¡ã§ããŸã-çæããã.cãœãŒã¹ã¯åé€ããªãã§ãã ããïŒã
ãŸããããã¯åäœããŸããïŒ
...ããããå®éã«ã¯-èšèªã¯ãŸã çã§ãã çå£ã«çãªã®ã§ã確ãã«äœããã®ãšã©ãŒãçºçããirc.freenode.comã®ãã£ãã«ïŒooc-langã«ç§»åããŸãã åå¿ãnddryliogãã¯èšèªã®äœè
ã§ãã ç§ãã¡ã¯è³ªåãããåçãåŸãŸãã ïŒç§ã¯æã
ããã«ãslavavããšè¡šç€ºãããŸãïŒã
ã¡ãªã¿ã«ãèšèªã¯éçºäžã§ããèè
ã¯ãã£ã³ãã«ã®
èšèªæ§æã®å€æŽã驿°ã«ã€ããŠãè°è«ãã
ããšãå«ã£ãŠããŸãã ïŒåœŒãã¯èªåãã¡ã§æžããŠããŸã-ã
èšèªã«
å°å
¥ããããã®é©æ°ãææ¡ãããããè¡ãæ¹æ³ãèããŸããïŒã ããã§ã®ãã©ã¹ã¯ãèšèªã®èåŸã«å€§ããªçµç¹ãå§å¡äŒããªãã®ã§ããã¹ãŠãæ¥éã«çºå±ããŠãããããªãã®å人çãªæèŠãèæ
®ããããšãã§ããŸãã
å®éãhello.exeãååŸããããšã¯ã§ããŸããããããšãã°Windowsã®FileReaderã䜿çšãããšãããã»ã¹ããã³ã°ããŠãã³ã°ããŸãã ããããéçºè
ã¯äœæ¥ããæ¢ãã宿ããŠããŸãã ãã£ã³ãã«çªå·ooc-langã¯éåžžã«ãã¬ã³ããªãŒã§ããªã¢ã«ã¿ã€ã ã§åé¡ãæ¬åœã«å©ããŠãããŸãïŒç¹ã«
nddryliogããªã³ã©ã€ã³ã®å ŽåïŒã
äžæ¹ãRockããããŸã
-oocèªäœã§æžããã
oocã³ã³ãã€ã©ã§ãã ã ããç§ã¯ãã¹ãŠããããªã«æªããšã¯æããŸããã Linuxã®äœè
ããããæã£ãŠããã ãã§ããã®äžã§ããå€ãã®ãã¹ããè¡ã£ãŠãããããWindowsãšã®äºææ§ã¯åªããŠãããšã¯èšããŸããã
ã¯ããã³ã³ãã€ã«ãé
ããªãå Žå-ãŠã€ã«ã¹å¯Ÿçãç¡å¹ã«ããŸãã ç§ã®hello.exeã¯30ç§éã³ã³ãã€ã«ããããŠã€ã«ã¹å¯ŸçïŒComodoïŒã¯3ç§ã§ãªãã«ãªããŸããã
ãã£ã³ãã«ã®ãµããŒããå¿
èŠãªå Žåã¯ãã
git pull && ant clean && ant
ãã䜿çšããŠèšèªããŒãžã§ã³ãæŽæ°ã§ããŸãã
aglitskyã®è©³çްïŒ
ããŒã ããŒãžãäŸOocã€ã³ã¹ããŒã«ãããžã§ã¯ãããã° ïŒå¿
èªïŒïŒ
Hacker NewsïŒFAQïŒã§ã®ãã£ã¹ã«ãã·ã§ã³docs.ooc-lang.orgã¯äŸ¿å©ãªããã¥ã¡ã³ãã§ãããããšãã°ã
oocããcã³ãŒããå©çšå¯èœã«ããæ¹æ³ã«ã€ããŠã¯ããã»ã©ã§ã¯ãããŸããã
GTKãGLãªã©ã®ãã€ã³ãã£ã³ã° + Rock-oocèªäœã§æžãããå®éšçãªoocã³ã³ãã€ã©ã
ãã€ã³ãã£ã³ã°ãããŠã³ããŒãããã
oocãã©ã«ããŒã«é¢é£ãã
src/sdk
ã«å±éãããããšãå®éšçã«æ€åºãããŸãã ïŒç§ã¯oocãããããæ¢ããŠããFileMonã調ã¹ãŸããããµã€ãäžã§ããã«ã€ããŠã®èšèã§ã¯ãããŸããïŒã
å
èš±
ã¡ãªã¿ã«ã
oocã³ãŒã
㯠BSDã©ã€ã»ã³ã¹ã«åºã¥ããŠé
åžãããŸãããã·ã¢èªã§ã¯ãã
ããŠã³ããŒãããŠäœ¿çšã ããã«ãŒã¹ãæã£ãŠåºã
埩venããããšãã§ã
ãŸã ãã»ãããããªãã§ãã ããïŒ ã©ãã§ã
éãããã« ãœãŒã¹ã³ãŒã ã¯å¿
èŠãããŸããã
蚎ããªãããšãçŽæããå Žåã¯ãã³ãŒããå°å·ããŠã·ãŒãã錻ã«å
¥ããããšãã§ããŸãã
äœè
ã®ã¿ã
瀺ããŠãã ãã ããïŒæç¢ºã«ããããã«ãèšèªã®äœè
ã¯ç§ã§ã¯ãªããèšèªãšã¯äœã®é¢ä¿ããããŸãããç§ã¯ã³ãã¥ããã£ãš
ææãªçºèŠãå
±æããŠããŸãïŒã
OOCã æçµçã«ã¹ããŒã¬ã³ããªããªã
ã¡ã€ã³ãããžã§ã¯ãã®ã¹ããŒã¬ã³ã¯ãããããã§ã-ãããã¯ãªãã¬ãã·ã¥ãšãšãã«å€åããŸãã ãã®äžã«ã¯ãY2käºæãããããŸã:)ããéå±ã«å¯Ÿããããªãã®ä¿éºããããªããžã§ã¯ãæåããµããã€ã¹ããããæäœãã®ãããã³ã°ãããå®ç§ã«ããããããééããããé
ããæ©ãããã¹ããŒã¬ã³ã䜿ãæãããŸãã...
ããã¥ã¡ã³ã
ooc-lang.org-
äœææ¥ïŒ
30-May-2009ãªã®ã§ãæããã¡ã«åè§£ããŠã¿ãŸãããã ïŒäžè¬çã«ãèšèªã¯5ãæã§ãïŒ
ããã§ãã¯ãããã©ãã«ã èè
èªèº«ããããèªããŠããã®ã§ãããªããéã«æ²¿ã£ãŠçè§£ãããã¹ãŠ-å
¬éããã-次ãå©ããŠãã ããã
å¥ã®é害ã¯ãgitãªããžããªãå
æ¥ãã®å Žæã倿Žãããããååšããªãgithub.comãžã®ãªã³ã¯ãèŠã€ããããšãã§ããããšã§ãããã®å ŽåãURLã®ã
github.com amoswenger / ...ãã->ã
github .com nddrylliog / ...ãã
ãœãŒã¹ã³ãŒãã¯ã ãœãŒã¹ã³ãŒããã€ã©ã€ã¿ãŒã§åŒ·èª¿è¡šç€ºãããŸããã
ãšã€ããž
ããã«ããã®çºã