ときどきの雑記帖 RE* (新南口)
Can I Build Another Me?
柚子胡椒
先週の 60秒チャレンジ!ルイージを救え!!|任天堂 は 柚子胡椒 - Wikipedia が問題だった。 「胡椒」が入っていないというのは知っていたけど じゃあなんで名前に「胡椒」がついているの? という話で
名称の「胡椒」は唐辛子を意味する九州方言[1]で、ここでは一般的なコショウではなく唐辛子の事を指している。 なお、コショウは「洋胡椒」と呼んで区別する。
というのを初めて知った。
現代用語の基礎知識
書店で見かけたのだけどずいぶん薄くなったねえ…
傘袋
はプラスチック削減のやり玉にはあがらん?
GNU Report Generator Language
GURGLE - GNU Report Generator Language 1.61 - User Manual: GURGLE - GNU Report Generator Language というのを別件で検索したときに見つけたのだけど、 なんだろこれ。
Collapse OS
Collapse OS: 文明崩壊した後、最小限の部品をかき集めて作ったコンピュータで動かすことを想定したOS。Z80, 8086, 6502など旧式のCPUでPOSIXをエミュレーション可能。作者はグローバルなサプライチェーンが2030年までに維持不可能になり「冬の時代」が訪れると予測している。https://t.co/aKegxXm0SP
— 新山祐介 (Yusuke Shinyama) (@mootastic) June 12, 2022
引用ツイート / Twitter にもいくつか言及しているツイートがあるけど
Collapse OS — Bootstrap post-collapse technology
Status
The Collapse OS project is completed! It can be downloaded here. Highlights:
- Runs on Z80, 8086, 6809 and 6502 machines with very little resources. See hardware support list.
- Can assemble Z80, AVR, 8086, 6809 and 6502 binaries.
- Can disassemble 6502 and 6809.
- Can emulate 6502 and 6809 (in Collapse OS itself!).
- Can program AVR microcontrollers.
- Has a command line text editor similar to Forth’s traditional editor as well as a visual text editor inspired by UNIX’ VI.
- Has a visual binary editor.
- Has the full power of a reasonably well-featured Forth interpreter.
- Exceedingly simple: The “real” portion of the code (excludes CVM, POSIX tools, doc, but includes everything a post-collapse computer would need to fullfill its purpose on all supported devices) is less than 200 kilobytes.
- Runs on any POSIX environment through a VM implemented in C.
- Built from a POSIX environment with minimal tooling: only cc, make and curses are needed.
POSIXをエミュレーション可能
はRuns on any POSIX environment
や
Built from a POSIX environment
からの早とちりでしょうね。
それはともかく このクラスのCPUパワーだと 日本語環境を構築するのはだいぶ厳しそう… (英語+半角カナ再び?)
Java
「デファクト言語」(Java)
エンタープライズソフトウェアではいまだデファクト言語の地位に君臨する。
という記述をみて「あーまたこんな(ry」 と元記事を参照したら
it is still the de-facto language for enterprise software.
とあったりして宇宙猫に。
duplicte replicate
#11: 配列の型定義
ローカル型推論と"[]“の組み合わせはコンパイルできない。
C形式の配列定義は複製されないので、変数毎に複製する必要がある。
前者はともかく後者は(ry なので元記事を見たが
11 Puzzles from JDK11: Hanno Embregts on Java Certification at Devoxx UK
Combining local type inference with [] would not compile
C type arrays definition needs to be duplicated for each variable; it is not replicated:
やっぱりよくわからん😓
さらに記事のリンク先を見ると eleven-crazy-java-things/Number11DeclareAndInitializeArraysTest.java at main · hannotify/eleven-crazy-java-things
package com.github.hannotify.elevencrazyjavathings.number11;
import java.util.List;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.*;
@DisplayName("#11 - A few freaky ways to declare and initialize arrays")
class Number11DeclareAndInitializeArraysTest {
@Test
@DisplayName("varArray() should return an int array of length 2")
void varArray() {
assertThat(Number11DeclareAndInitializeArrays.varArray()).hasSize(2);
}
@Test
@DisplayName("cStyleArray() should return a List with two int arrays")
void cStyleArray() {
final List<int[]> list = Number11DeclareAndInitializeArrays.cStyleArray();
assertThat(list).hasSize(2);
assertThat(list).hasOnlyElementsOfType(int[].class);
}
}
なのだけどこれまたよくわからない(後者はassetThatが二つに分かれているのがポイント?)。 じゃあと同じリポジトリから辿った
package com.github.hannotify.elevencrazyjavathings.number11;
import java.util.List;
public class Number11DeclareAndInitializeArrays {
static int[] varArray() {
int[] elements = null;
// var[] elements = new int[2];
return elements;
}
static List<int[]> cStyleArray() {
int array1[], array2;
array1 = new int[1];
//array2 = new int[1];
return List.of(array1);
}
}
を見つけて眺めることしばし。
あー、こっちのコメントアウトされているところが記事で言及していたことか! とようやく納得。
// var[] elements = new int[2];
はコメントアウトしてもコンパイルできないし、
//array2 = new int[1];
もCでいうところのint *p, q;
と同じように型が違うので
エラーと。
んで、翻訳記事に戻ると
- C形式の配列定義は複製されないので、変数毎に複製する必要がある。
この二つの「複製」は 原文では duplicated と replicated なので、訳しわける。 のは難しいかねえ。
V
プログラミング言語 "V" は使うに値するか? Vの特長とされる「NULLが存在しない」「未定義動作がない」「コンパイルが速い」などの主張を検証している。
— 新山祐介 (Yusuke Shinyama) (@mootastic) June 19, 2022
結論: 特長の多くは検証できず。現状のVは使うに値しない。https://t.co/WTomPWDfrD
色々書かれてるけどこれに一番びっくりした。
V Language Review (2022) | mawfig.github.io
Let’s see if we can pass a null reference to a function. The docs contain an example of a tree structure, so let’s adapt that and see if we can create a null reference. Null usually corresponds to 0 so we’ll try that:
struct Node { val int left &Node right &Node } fn main() { n := Node { 123, 0, 0 } println(n.left) }
$ ./v run test.v signal 11: segmentation fault /tmp/v_1000/test.2938032035736349851.tmp.c:6750: at print_backtrace: Backtrace /tmp/v_1000/test.2938032035736349851.tmp.c:6821: by v_segmentation_fault_handler 7f6ff9bfe210 : by ??? /tmp/v_1000/test.2938032035736349851.tmp.c:11990: by main
Oh, no. 😰 Let’s check the generated C and see what’s up:
... struct main__Node { int val; main__Node* left; main__Node* right; }; ... VV_LOCAL_SYMBOL void main__main(void) { main__Node n = ((main__Node){.val = 123,.left = 0,.right = 0,}); println(str_intp(1, _MOV((StrIntpData[])}))); } ...
V言語のレビューして使えないという評価をするのはおっしゃるとおりとしか言いようがないけど、だからって必要以上に馬鹿にするのはやめてほしい。コミュニティベースのプロジェクトなんて開発者のモチベ削れたら簡単に終了してしまうので。Vはあれなところもあるけど、みんな熱意があって頑張ってるよ
— zakuro (@zakuro9715) June 19, 2022
言ってることはわかるけど、 新山さんのツイートや元記事を指して言ってるんだろうか?>「必要以上に馬鹿にする」
それはそれとして
盛り上がってますな。
cold showers
ソフトウェア開発における「冷や水 (cold showers)」の一覧:
— 新山祐介 (Yusuke Shinyama) (@mootastic) June 19, 2022
「形式的検証はいい!」→ 冷や水: 高額で不完全。
「静的型付けでバグ削減!」→ 冷や水: 証拠なし。
「マイクロサービス!」→ 冷や水: やめて。
「goの並行処理は素晴らしい!」→ 冷や水: バグ多発している。
etc.https://t.co/wC3YhtkMxy
ここでいう冷や水 (cold showers)は cold showerの意味 - goo辞書 英和和英 にある
((略式))(幻想などから)目を覚まさせるもの,現実に気づかせるもの;興ざめなもの
じゃないですかね。 「冷や水」とはちょっと違うような。
聖地巡礼
「よりもい」きっかけで南極に行った方が今度は
- ゾンビランドサガ聖地巡礼その1(準備・伊万里エリア) | ろじっくぱらだいす(Logic Paradise)
- ゾンビランドサガ聖地巡礼その2(鹿島・嬉野エリア) | ろじっくぱらだいす(Logic Paradise)
- ゾンビランドサガ聖地巡礼その3(唐津エリア) | ろじっくぱらだいす(Logic Paradise)