Discuss Scratch

inoking
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

#2620:

Atridott wrote:

適切な投稿場所がわからなかったのでここで質問します。
プログラミング言語には公式に推奨されている命名規則というものが存在することがあります。
例えばPythonにはPEP8という規約が存在し、コメントや関数名などの規則が定められています。
Scratchにそのような制約はもちろんありませんが、なるべくなら多くの人から読みやすいコードを心がけたいです。変数名はこうしている、のようなものが有れば教えて下さい。
私はローカル変数や「画面を再描画せずに実行する」の定義は
「_」の接頭辞をつけるようにしています。

なお、名前で区別しなくても 見た目だけで区別ができるように
というのは「異論のない提案」にあります。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
Atridott
Scratcher
500+ posts

Scratch以外のプログラミング言語やってる人交流場

ローカル変数に _ をつけるのは似たような考えを見ますし、良いと思います。ステージで表示するときのような「スプライト名:変数」になるとわかりやすいかもしれませんが…

Scratchの署名かと思ったら〜、











王道の白菜でした〜。
チクショー!!

ランダム単語ガチャで作ったのでクオリティは知らないです。


























.
akinarin
Scratcher
500+ posts

Scratch以外のプログラミング言語やってる人交流場

先日はご迷惑をお掛けして、すみませんでした。
~~~~~~~~~~~~~~~~~~~~~~
代数的エフェクトを
継続モナドをC#で実装することで
C#でも使うことができるのではできないかと思い、やってみました。

クエリ式を使うことによってC#で継続モナドを簡単に書けるようにしています。
以下はMaybeモナドを代数的エフェクトで使ってみたものです。
最新版のC#で動作確認はしています。
(C# 9以降でないと動かないと思います)
(追記2023/1/29: プログラムを改善しました)
using System;
{
//maybeエフェクトのハンドラ
Maybe<int, string> maybe = new(){
None = new(resume => "数字に変換できない文字です")
};
Console.WriteLine(ParseAdd("34", "14", maybe).Run(x => x.ToString()));
Console.WriteLine(ParseAdd("34f", "14", maybe).Run(x => x.ToString()));
}

//文字列を数字に変える。
CC<int, T> Parse<T>(string str, Maybe<int, T> maybe) =>
int.TryParse(str, out var num) ? CC.Return<int, T>(num) : maybe.None;

//2つの文字列を数字に変えて足す
CC<int, T> ParseAdd<T>(string left, string right, Maybe<int, T> maybe) =>
from l in Parse<T>(left, maybe)
from r in Parse<T>(right, maybe)
select l + r;

public class Maybe<R, T> {
public required CC<R, T> None{ get; init; }
}

//継続モナドの実装
public record CC<R, T>(Func<Func<R, T>, T> Run) {
public CC<R2, T> Select<R2>(Func<R, R2> func) =>
new(resume => Run(x => resume(func(x))));
public CC<R2, T> SelectMany<R2>(Func<R, CC<R2, T>> func) =>
new(resume => Run(x => func(x).Run(y => resume(y))));
public CC<R3, T> SelectMany<R2, R3>(Func<R, CC<R2, T>> func,
Func<R, R2, R3> func2) =>
new(resume => Run(x => func(x).Run(y => resume(func2(x, y)))));
}

public static class CC{
public static CC<R, T> Return<R, T>(R value) => new(f => f(value));
}

Last edited by akinarin (Jan. 29, 2023 03:38:03)


最近、物理と世界史、数学、ボカロにはまっています。
プログラミング言語制作の方は案を作るのに夢中になり過ぎて捗っていません。
あと、使い始めたのにRustに慣れていない…
kyokyoro
Scratcher
100+ posts

Scratch以外のプログラミング言語やってる人交流場

#2621
そのままページを取得してDOMからjsonを作成するしかないでしょう。
DOM解析はjsのほうがし易いので サーバーで取得→jsに渡すがベストかと。
kst_dx
Scratcher
8 posts

Scratch以外のプログラミング言語やってる人交流場

#2621:

PHPだとComposerとかのライブラリが必要になったり、環境に依存したりするので、JavaScriptのコードをおいておきます。

<script type="module">
    // 第一引数にユーザ名、第二引数に最大取得数
    const getUserActivity = async (user = 'griffpatch', max = 10000) => {
        const raw = await (
            await fetch(
                `https://scratch.mit.edu/messages/ajax/user-activity/?user=${user}&max=${max}`
            )
        ).text() // テキストデータとしてFetchで取得
        const html = new DOMParser().parseFromString(raw, 'text/html') // テキストをDOMに変換
        // li要素の中身を抽出して配列に戻す
        let result = []
        for (let item of html.querySelectorAll('li')) {
            item = item.querySelector('div')
            result.push({
                actor: item.querySelector('span.actor').textContent, // アクティビティをやった人みたいな感じでしょうか
                body: item.childNodes[2].data.trim(), // リミックスなどのアクティビティ内容
                href: item.querySelector('a').getAttribute('href'), // プロジェクトやスタジオのURL
                title: item.querySelector('a').textContent, // プロジェクトやスタジオのタイトル
                time: item.querySelector('span.time').textContent.trim() // タイムスタンプ
            })
        }
        return result // 結果を戻す
    }
    // この場合はmagicAhoさんのアクティビティを最大10000個取得するコードになります
    console.log(await getUserActivity('magicAho'))
</script>
<!-- (赤丸で囲まれているところがありますが、ScratchのフォーラムがJavaScriptのテンプレートリテラルに対応していないだけだと思うので安心して使って下さい) -->

こんな感じです。ちなみにTop-Level awaitを使ってるのでスクリプトタイプはmoduleにしています。
また、調べた感じだとfetchだと日本語、直リクエストだと英語で表示されていたりしたので挙動が不安定になる可能性が高いです。

お役に立てていたら幸いです。

Long-time Deno(JS) lover. / Golang user
suzumiyaharuhi99
Scratcher
5 posts

Scratch以外のプログラミング言語やってる人交流場

昔は垢無しでscratchしてたけどとあるscratchの本でHSPが紹介されてて面白そうだからって始めたらscratchに移植するほどハマった
akinarin
Scratcher
500+ posts

Scratch以外のプログラミング言語やってる人交流場

#2624のF#版をやってみました。
F#はコンピュテーション式があり、型推論が強くて快適ですね。
WriterモナドもどきとMaybeモナドを、代数的エフェクトもどきで使ってみました。
type Cont<'r, 't>(run: ('r -> 't) -> 't) =
member this.run = run

type ContBuilder() =
member __.Return(x) = Cont(fun resume -> resume(x))
member __.Bind<'a, 'b, 't>(m : Cont<'a, 't>, f: 'a -> Cont<'b, 't>) =
Cont(fun resume -> m.run(fun x -> f(x).run(resume)))
member __.ReturnFrom(x) = x

let cont = ContBuilder()

type Maybe<'a, 't> = {
none: Cont<'a, 't>
}

let maybeLift<'a, 't>(maybe: Maybe<'a, 't>)(op: Option<'a>) =
match op with
| Some x -> cont{ return x }
| None -> maybe.none

let safeDiv<'t> x y (maybe: Maybe<int, 't>) = cont{
if y = 0 then
return! maybe.none
else
return x / y
}

let runCont<'a> (cont: Cont<'a, 'a>) = cont.run(fun x -> x)

let rec each<'a, 't>(lst: List<'a>)(f: 'a -> Cont<unit, 'b>) =
match lst with
| x :: rem ->
cont {
do! f x
do! each rem f
}
| [] -> cont { return () }

type Writer<'t> = {
write: string -> Cont<unit, 't>
}

let earlyReturn<'a, 'b, 't>(body: ('a -> Cont<'b, 't>) -> Cont<'a, 't>) = Cont(fun resume -> body(fun x -> Cont(fun _ -> resume(x))).run(resume))

let runWriter<'a, 't>(f: Writer<'t> -> Cont<'a, 't>) =
let mutable output = ""
let writer = {write = fun x -> Cont(fun resume -> resume(output <- output + x)) }
cont{
let! v = f(writer)
return (v, output)
}

runWriter(fun writer -> earlyReturn <| fun ret -> cont{
let maybe = {
none = cont {
do! writer.write("0で除算しました");
return! ret ();
}
}
do! each([3; 2; 0; 5])(fun x -> cont{
let! a = safeDiv 10 x maybe
do! writer.write <| $"10 / {x} = {a}\n"
})
do! writer.write "success"
return ()
}).run(fun (_, s) -> printf "%s" s)

最近、物理と世界史、数学、ボカロにはまっています。
プログラミング言語制作の方は案を作るのに夢中になり過ぎて捗っていません。
あと、使い始めたのにRustに慣れていない…
mitaku115
Scratcher
500+ posts

Scratch以外のプログラミング言語やってる人交流場

PythonをchatGPTに書かせてみたら、わかりやすいものを書いてくれた。
画像貼るのめんどいんでリンクで リンクはやらかしたので消去(すいませんでした)
参考にしたいと思ったんですが、
こういうのを間に受けるのはよくないんですかね?間違っているとかの観点で

Last edited by mitaku115 (Feb. 5, 2023 02:17:17)


署名をスクショして今日の運勢を占おう
エイプリルフールはもう終わりました
inoking
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

mitaku115 wrote:

こういうのを間に受けるのはよくないんですかね?間違っているとかの観点で
こういうニュースもありますので
ChatGPTによる回答をStack Overflowが一時的に禁止 大量のもっともらしいが不正確な回答に対処しきれず
に受けるのはよくないでしょう。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
newmomizi_txt
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

ChatGPTといえば、最近私はそれに競技プログラミングの問題を解かせる試みをしています。
試しにAtCoder Beginners ContestのB問題を適当に選んで解かせてみました。
1回目: int型の変数で計算させようとする(オーバーフローするため間違い)
2回目: int64_t型の変数で計算させようとする(やはりオーバーフローする)
3回目: GMPライブラリを使用し、巨大な数の計算を可能にすることで無理やり解く

ここで、「a ≡ p(mod n)かつb ≡ q(mod n)なら、ab ≡ pq(mod n)」ということを教える

4回目: これを使用し、模範解答に非常に近いプログラムを生成する。
ひっかけ問題には普通にひっかかりましたが、解くためのヒントさえ与えてあげれば正解までたどり着くことが出来ました。

機械翻訳についても同じことを誰かが言っていた気がしますが、
「AIにプログラミングを任せたとしても、それを正しいかどうか判断するためには人間のプログラミング能力が必要」
という結果になると思います。

ここから下は署名(しょめい)と言います。(最終更新 2024/02/01 JST)
1973年(昭和48年)12月、愛知県宝飯郡小坂井町(現・豊川市)を中心に「豊川信用金庫が倒産する」というデマが流れたことから取り付け騒ぎが発生し、短期間(二週間弱)で約14億円もの預貯金が引き出され、倒産危機を起こした事件である。
警察が信用毀損業務妨害の疑いで捜査を行った結果、女子高生3人の雑談をきっかけとした自然発生的な流言が原因であり、犯罪性がないことが判明した。デマがパニックを引き起こすまでの詳細な過程が解明された珍しい事例であるため、心理学や社会学の教材として取り上げられることがある。

(Wikipedia「豊川信用金庫事件」より引用、2024年2月1日閲覧。)
akinarin
Scratcher
500+ posts

Scratch以外のプログラミング言語やってる人交流場

chatGPTのようなAIが発展していくことで、
将来的にプログラマという仕事やその一部がAIに置き換えられていくのではないかと思ったのですが、
どうだと思いますか?

複雑な論理を伴うプログラムだと、AIに書かせることは難しいかも知れませんが、
簡単なプログラムなら「AIに書かせて、それを人間が修正する」といった作業で出来てしまうような気がします。

僕は、プログラマは、殆ど自分の力でプログラムを書く必要が無くなり
少ない人員で、今よりも遥かに効率的にプログラミングが行われる世の中になると思います。

最近、物理と世界史、数学、ボカロにはまっています。
プログラミング言語制作の方は案を作るのに夢中になり過ぎて捗っていません。
あと、使い始めたのにRustに慣れていない…
magicAho
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

magicAho wrote:

僕は
・HTML
・JavaScript(少し)
しかできないです。
PHPもできるようになったーーーー

ああ、悲しいことに、私の署名は怒ったバケツに食べられました。この署名の発案者です。
Oh, sadly, my signature was eaten by an angry bucket. この署名を広めよう!!
The Nandeyanen Network Owner.
inoking
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

akinarin wrote:

chatGPTのようなAIが発展していくことで、
将来的にプログラマという仕事やその一部がAIに置き換えられていくのではないかと思ったのですが、
どうだと思いますか?

複雑な論理を伴うプログラムだと、AIに書かせることは難しいかも知れませんが、
簡単なプログラムなら「AIに書かせて、それを人間が修正する」といった作業で出来てしまうような気がします。

僕は、プログラマは、殆ど自分の力でプログラムを書く必要が無くなり
少ない人員で、今よりも遥かに効率的にプログラミングが行われる世の中になると思います。
ChatGPT に限らず、ロボットが人間の仕事を奪うといったことを多くの人が危惧している訳ですが
結局その「修正」に手間暇がかかるので、なかなかその状況にはならないと私は見ています。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」ではない

・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
abee
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

その一方、いままでAIにはできないと考えられていたことが、この数カ月で状況が大きく変わったこともあります。つまり、世の中の変化は滑らかに起こるだけではなく、何かをきっかけに急激に変わることもあるわけです。それに備えることは難しいですが、頭の隅に入れておくと良いかもしれません。
いずれにしても、ChatGPTやStable Diffusionのようなものはすでに存在しており、応用分野も広がっています。今後、AIが生成したものの検証や修正についての研究も進むでしょう。すでにプロンプトエンジニアリングという技術分野が立ち上がりつつあります。
henjii_
New to Scratch
3 posts

Scratch以外のプログラミング言語やってる人交流場

さっきこんな記事(newscratcherなのでリンク貼れませんでした)を見つけました。
「AIを使って書かれた文章か判断するAI」というのが作られていることには驚きです。

Last edited by henjii_ (Feb. 5, 2023 06:38:33)


henji243のサブ垢です。
たまにこっちでも投稿するかも。
Atridott
Scratcher
500+ posts

Scratch以外のプログラミング言語やってる人交流場

とある企画でClojureを触っているのですが、入力の仕方すらわからなくて詰みました。誰かわかりますか? clojure.java.io ( ᐛ ) ナニソレオイシーノ

Scratchの署名かと思ったら〜、











王道の白菜でした〜。
チクショー!!

ランダム単語ガチャで作ったのでクオリティは知らないです。


























.
Doctor_Fe
Scratcher
100+ posts

Scratch以外のプログラミング言語やってる人交流場

少し調べたら出てきました。
標準入力で受けた文字列をそのまま標準出力に送るコードを書いておきます。
(println (read-line))
kst_dx
Scratcher
8 posts

Scratch以外のプログラミング言語やってる人交流場

最近Denoでブログ等を作るのにハマっています。
開発体験もとても素晴らしいものです。

私はFreshというWebフレームワークを使っていますが、皆さんはどのようなWebフレームワークを使っておられますか?
また、自分で作った!という人はいますか?

Long-time Deno(JS) lover. / Golang user
08233280
Scratcher
19 posts

Scratch以外のプログラミング言語やってる人交流場

Github持ってる人
名前は言わんぞ?
プログラミング言語は、主に C# VBやってる。
だいたい、C#で終わらしてる。
kst_dx
Scratcher
8 posts

Scratch以外のプログラミング言語やってる人交流場

Last edited by kst_dx (Feb. 19, 2023 04:04:29)


Long-time Deno(JS) lover. / Golang user

Powered by DjangoBB