トップページ⇒tech
28コメント13KB

【高速・強力】Euphoria【Win32,DOS,Linux対応】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/06/30(木) 21:54:09
Euphoriaという名前のPascal + Basic / 2 なインタプリタ言語です

ttp://www.rapideuphoria.com/

Win32、DOS、Linuxに対応しており、DirectXやOpenGLなどのライブラリを
動作させることが可能です。

また、スタンドアロンな実行ファイルを生成することができます。
000412005/06/30(木) 21:55:57
最初の方は意訳してたんだけど、だんだんめんどくさくなってExcite翻訳してしまった…。
申し訳ない。
0005デフォルトの名無しさん2005/06/30(木) 21:55:57
Euphoriaルーチンは自然に一般的です。 以下の例のプログラムは、
  それはどんなタイプに関するデータも分類するでしょう

もうちょっとちゃんと訳してくれたら使ってみる
000652005/06/30(木) 21:57:06
>>4
謝ったんで許す。んでこれはDelphiと何が違うの?
000712005/06/30(木) 21:58:38
以下のプログラムというのは、これのことです。

sequence list, sorted_list

function merge_sort(sequence x)
-- put x into ascending order using a recursive merge sort
  integer n, mid
  sequence merged, a, b

  n = length(x)
  if n = 0 or n = 1 then
    return x -- trivial case
  end if

  mid = floor(n/2)
  a = merge_sort(x[1..mid]) -- sort first half of x
  b = merge_sort(x[mid+1..n]) -- sort second half of x

  -- merge the two sorted halves into one
  merged = {}
  while length(a) > 0 and length(b) > 0 do
    if compare(a[1], b[1]) < 0 then
    merged = append(merged, a[1])
      a = a[2..length(a)]
    else
      merged = append(merged, b[1])
      b = b[2..length(b)]
    end if
  end while
  return merged & a & b -- merged data plus leftovers
end function
000812005/06/30(木) 21:58:49
procedure print_sorted_list()
-- generate sorted_list from list
  list = {9, 10, 3, 1, 4, 5, 8, 7, 6, 2}
  sorted_list = merge_sort(list)
  ? sorted_list
end procedure

print_sorted_list() -- this command starts the program
0009デフォルトの名無しさん2005/06/30(木) 22:02:14
>>6
先ず、オブジェクト指向ではありません。
ついでにいうとBASICに近い、といえます。
0010デフォルトの名無しさん2005/06/30(木) 22:03:14
コレだけ見ても,何が強力なのかわかりません。Rubyでも書けそう。
Euphoriaならコレが違う!ってのを提示してもらえると嬉しいです。
0011デフォルトの名無しさん2005/06/30(木) 22:03:52
>>9
じゃあ魅力を感じないなあ……
001212005/06/30(木) 22:06:23
ふう、思いっきりカキコ制限に引っかかってもうた…。

>>10
速度が速い、プログラムをCに変換してそのままコンパイル出来る。
また、Euphoriaは高速にプログラムを開発することを念頭において開発されています。
0013デフォルトの名無しさん2005/06/30(木) 22:08:41
速度が速いとか,高速に開発できるなんてことはいまどきどの言語でも言ってます。
具体的に提示していただけると嬉しいです。

今日は酔ってるので実際にやる元気がないです。すまん
0014デフォルトの名無しさん2005/06/30(木) 22:24:59
なんて読むの

ユーフォリア?
0015デフォルトの名無しさん2005/06/30(木) 22:37:02
なんか独自のパラダイムとかあれば面白いんだけどね
0016デフォルトの名無しさん2005/06/30(木) 22:51:54
なんか独自のパラダイスとかあれば面白いんだけどね
0017デフォルトの名無しさん2005/07/02(土) 14:19:17
クラスはあるの?もうクラスのない言語じゃつかいたくないよ
0018デフォルトの名無しさん2005/07/04(月) 23:57:21
 データベース(Euphoria Database System (EDS))が、簡単に、
不定形で複雑なデータ構造が扱えるのは、使えそう。
0019デフォルトの名無しさん2005/07/06(水) 13:16:36
>>5
多態の事だと思う。

>>3って、かなり古い内容なんじゃないかな。後発の言語なら殆んどサポートしてる事なのに。
最先端な割りには、10年以上の歴史があるとか...は、まぁ。どうでもいいとして。

+ 処理系のコンパクトさ, linuxだと、static linkで150kb程度。
euphoria処理系自体がその言語で書かれている。
+ 行列の演算, スライスの inplace operation。
+ Machine level interface,

特に珍しい特徴ってわけでもないけど。
実装で分類するならHigh Level Assembler的な位置付け。言語的には特に目立った特徴なし。

> b = b[2..length(b)]
b = b[2..$]とも書ける。
0020デフォルトの名無しさんNGNG
面白そうな言語だね
速いってのがいい
0021デフォルトの名無しさん2005/07/09(土) 18:19:25
初心者用の言語かな。
ゲーム作ったりするような。
OpenGLとかで3Dシューティングとか。
0022デフォルトの名無しさん2005/07/10(日) 12:08:40
機能が少ない分、言語の習得自体は容易かも知れないが、
実用的なプログラム作るとなると、標準ライブラリが少ないので。
C言語と同様、システムに依存する部分の知識が要求される。

部分的になら、Python + Pyrex + Psyco + Numpy + Py2exe に相当する能力はあるけど、
既存のスクリプト言語と比較すると、利点より足りない部分の方が多いと思う。
カプセル化がないとか、その辺りの事を実行効率とのtrade offと捉えらえるかどうかで評価が別れそう。

+ C言語との相性。スクリプトないでdllを呼べる。-- rubyのdl/importやpythonのpyrexより簡単に
+ 標準で付いてたデバッガは初心者にとっても使いやすいと思う。(perlやpythonの標準デバッガと較べて)
0023デフォルトの名無しさん2005/07/10(日) 12:50:07
>>17
oobkキター
0024デフォルトの名無しさん2005/07/10(日) 14:48:43
Cトランスレータってどんな感じなの?
0025デフォルトの名無しさん2005/07/10(日) 14:53:29
あ…トランスレータって金払ってレジストレーションしないとダメっぽい
0026デフォルトの名無しさん2005/07/10(日) 17:52:29
- bignumの計算. 境界チェックはしてないが、28bit程度の整数で桁溢れっぽい。<integer
atom型だと大丈夫だけど、限度があるみたい。bignumは自分で実装しろってことなのかな。
- float型がない? 計算が出来ないわけじゃないけど、型として存在してないのはどうして。
+ 実行時エラーの時はcore代わりに、テキストでエラー時の環境情報ex.errファイルを吐き出してくれる。

-- 配列の演算
sequence a
a = {1, 2, 3}
? a * 10
? a + a
a[2..$] += 10
? a
? {{1,2},{3,4}} + {{5,6},{7,8}}
-- 実行結果
{10, 20, 30}
{2, 4, 6}
{1, 12, 13}
{{6,8},{10,12}}
0027デフォルトの名無しさん2005/07/10(日) 17:56:00
-- ユーザー定義型
type natural(integer number)
  return number > 0
end type

function factorial(natural number)
  if number > 2
    return number * factorial(number-1)
  else
    return 1
  end if
end function

perlやpythonでもこれらと同様の仕組みは簡単に作れるけど。
Euphoriaのアドバンテージは、これが標準機能で(perl/pythonでやる場合に較べ)オーバーヘッドが少ないところ。
...

# クラスなくてもいいけど構造体くらいは欲しいなー。
0028デフォルトの名無しさん2005/07/10(日) 18:16:16
>>25
登録してなくても使えるけど、
実行時に、メッセージがでてきて少し待たされてから目的のコードが実行される。
登録はその制限を外す為のものらしいです。

ソースにあるのかなと思ったけど、肝心な部分はやっぱりblackbox。
ecu.a へはstatic linkされてて、ecu.aのソースコードは公開されてないみたい。
■ このスレッドは過去ログ倉庫に格納されています