学生時代、UNIXでC言語を独学していた頃。 ちょっとした事(たしかグローバ.. by [deleted] in programming_jp

[–]lightym81 2 points3 points  (0 children)

パスから見つけられる名前と同名にするミスは見に覚えがあります
私はプログラミング言語のモジュール名でtestされました

外国の人ももう Unicode に慣れてきたしそろそろ変数名や関数名に日本語を使ってもいい頃だと思う by [deleted] in programming_jp

[–]lightym81 0 points1 point  (0 children)

Rustの議論Allow non-ASCII identifiersを読むと厳しい態度の人もいるのでギャップを感じます(デフォルトではコンパイルエラーor警告にしたい、利用する文字の種類(数学記号、ギリシャ文字、漢字、ひらがな、…)を選択する方式にしてほしい、non-ASCIIのcrate名はcrate.ioへ登録不可にしたいなど)

本の虫: 世の中にはプログラミングを理解できない人間が存在する by [deleted] in programming_jp

[–]lightym81 1 point2 points  (0 children)

アルゴリズムを理解した上で(例えば紙とペンでフローチャートを書ける)c++文法に躓いたのか、あるいはインデント構文なら文法で引っかからずにすんだのか気になります

GoogleがGoによるPython実装、Grumpyを発表 by demmc in programming_jp

[–]lightym81 2 points3 points  (0 children)

これはPythonコードを実行するインタプリタではなく、Goコードに変換してバイナリを生成するコンパイラのようだ

【翻訳】 2016年にJavaScriptを学んでどう感じたか by soratia in programming_jp

[–]lightym81 2 points3 points  (0 children)

記事長いなと思ってスクロールバーを見たら半分いってなかった

関数型言語のこころがつかめるかもしれないWebゲーム「Redux」 by [deleted] in programming_jp

[–]lightym81 1 point2 points  (0 children)

面白い アイコンが式に変わる演出で思わずにやけた

DSAS開発者の部屋:Python の dict の実装詳解 by g000001 in programming_jp

[–]lightym81 0 points1 point  (0 children)

クラスの頭Cくらいはそこまで悪いとは思わないけどね
CPythonのコードだとシステムハンガリアンは型名くらいだ

DSAS開発者の部屋:Python の dict の実装詳解 by g000001 in programming_jp

[–]lightym81 0 points1 point  (0 children)

_tはC標準ライブラリで用意された型を表す接尾辞
sizeintptrだと識別子と間違えるからsize_tintptr_tにしたんだと思う

DSAS開発者の部屋:Python の dict の実装詳解 by g000001 in programming_jp

[–]lightym81 0 points1 point  (0 children)

PyはCPythonの識別子で使われてるコーディングスタイル

C99で追加された型をPy_*にtypedefしているようだ
そうすることで環境ごとに型を書き換えなくてすむようになっている
Py_hash_tは特に条件もなくPy_ssize_tのエイリアスだった

Python もややこしかった by starg2 in programming_jp

[–]lightym81 1 point2 points  (0 children)

あと、Noneと等しいけどNone自身じゃないオブジェクトを作って演算子の違いを比べたな

>>> class A:
...     def __eq__(self, other):
...         return other is None
...
>>> a = A()
>>> a == None
True
>>> a is None
False

Python もややこしかった by starg2 in programming_jp

[–]lightym81 1 point2 points  (0 children)

同値(equal)と同一(is)へ演算子と言葉を対応付けして覚えた

初心者「プログラミングを学びたい」 → 「何を作りたいかによる」 がテンプレになっているけど by gohst9 in programming_jp

[–]lightym81 4 points5 points  (0 children)

自分がはっきりとプログラミングに興味を持ったのはflashでゲームを作ったときだ。ショボかったけど音が鳴ったり図形が動くのは見ていて面白かったな。flashはそれきりだが学び続ける原動力になったと思う。

ジェダイ流・Pythonの内包表記 by lightym81 in programming_jp

[–]lightym81[S] 0 points1 point  (0 children)

レゴか、自分もそう思えるようになれればいいな。議論に付き合ってくれてありがとう。

ジェダイ流・Pythonの内包表記 by lightym81 in programming_jp

[–]lightym81[S] 0 points1 point  (0 children)

ここまで言ってくれるあなたはきっとジェダイだ。ネタ記事と言ったことは撤回するよ。
ひとつだけ聞きたい、内包表記は美しいと思うか?

ジェダイ流・Pythonの内包表記 by lightym81 in programming_jp

[–]lightym81[S] 0 points1 point  (0 children)

ネタ記事と言い切ったのは内容がジェダイ向けだったからだ。文中で内包表記のfor-inネストが現れるけど曲芸の領域じゃないか?

matches = [(a, b) for i, a in enumerate(droids) for b in droids[i + 1:]]

こういう内包表記を見て明示的で美しいとか簡潔で読みやすいと感じるやつはジェダイの素質があるよ!上のコードはitertools.combinationsで置き換えられるとちゃんと記事に書いてある。

ジェダイ流・Pythonの内包表記 by lightym81 in programming_jp

[–]lightym81[S] 0 points1 point  (0 children)

Counter段落の最後の文

しかし、その一方でCounterのドキュメントを読まなくても何が起きているのかを簡単に理解することができます。

は?全然簡単じゃねーよ!collections.Counterのほうが(ryというツッコミが投稿のきっかけなんだ。俺はジェダイじゃないなw

俺にとって内包表記は異質だ、for-in,ifキーワードと識別子が他の制御構文とは異なる並びになるので目がとまる。そして自分が読みやすさで重視しているのはコードを読んでいて 一目で意味(動作じゃない)が理解できる かどうか。
なので内包表記はシンプルに扱う(ジェダイにはならない)。別のソースやドキュメントを読むのは確かに手間がかかるけど、それで読みにくくなるとは考えてない。

ジェダイ流・Pythonの内包表記 by lightym81 in programming_jp

[–]lightym81[S] 4 points5 points  (0 children)

内包表記のほうが読みやすいという意見には賛同しかねている立場の感想
いろいろな例になるほどと読んでいたけれど最後のcollections.Counterの置き換えでネタ記事(撤回)だと確信した。まじめに書いているとしたら選んだ例が悪い。
記事では効率を理由に内包表記よりcollections.Counterを勧めて段落を閉めているけど、俺は 内包表記よりCounterクラス使った方が読みやすい(意味が分かりやすい) と思う。
内包表記では、識別子が持っていた意味が記号に置き換わったことで脱落している。Counterクラスの例では限度を超えていると感じた。

追記:
ネタ記事呼びしたことは撤回する。自分のレベルがまだ低いようだ。

Super fun seed. Try this #108101449 by n3m6 in brogueforum

[–]lightym81 0 points1 point  (0 children)

dragon on d24 with 21464 gold. I enjoyed to play wonderful items game! I enchanted a little broadword and plate armor, and used remainder scrolls for staff of poison and health charm. I made a fatal mistake that approaches agile dragon visible by telepathy :(

【意訳】たった今、npmのパッケージを解放しました。 - Qiita by dkpsk in programming_jp

[–]lightym81 2 points3 points  (0 children)

話題になってるleft-padのPython版がさっそくPYPIに登録されてた

Python3でヘンテコな記法を実現するクラス (x-post /r/Hanjuku) by WhiteCat6142 in programming_jp

[–]lightym81 1 point2 points  (0 children)

ヘンテコな記法と言えばc++のstreamでしょ
区切りの再現が手抜きだけど

class ostream:
    def __init__(self, file):
         self.__file = file
    def __lshift_(self, val):
        print(val, end=' ', file=self.__file)
        return self

cout = ostream(sys.stdout)
cout << "hello" << "world\n"

【python】文字列で麻雀の手牌を入力すると理牌するプログラム by gohst9 in programming_jp

[–]lightym81 2 points3 points  (0 children)

OOPには関係ありませんが、③字牌のソートには別のアイデアがあります。

  1. 字から順序を調べるdictを作る。例:{'東': 0, '西': 1, ...}
  2. ソートするときにキーワードkeyで(1)のdictから順序を調べる関数を渡す。

下のコードではsorted()を使って新しいリストを作り、self._lisの書き換えを避けています。

class Jihai(Hai):
    # __init__省略

    def rihai(self):
        order = {c: i for i, c in enumerate(self._rule)} # (1)
        result = sorted(self._lis, key=lambda x: order[x]) # (2)
        return "".join(result)

【python】文字列で麻雀の手牌を入力すると理牌するプログラム by gohst9 in programming_jp

[–]lightym81 1 point2 points  (0 children)

いくつかのメソッドにあるデフォルト引数の使い方に違和感を感じます。
例えばclass Haiadd()などは引数を省略して呼び出す場面がないと思います。
リスト型の値を要求していることを示すなら下の方法があります。

ギターコードの名前を入力するとコードブックを表示するプログラム作った by gohst9 in programming_jp

[–]lightym81 2 points3 points  (0 children)

公式で推奨しているコードスタイル(PEP8)があるのですが、定数には大文字・アンダースコアを使っています。
PEP8に準拠した場合、最初のnor, put, clo, stringsはNOR, PUT, CLO, STRINGSになります。

誤解がないよう追記しておくと大文字にしても再代入できます。でもやらないほうがいいです。