AIのことを語りたい。

言語生成AIと人の共生は、言語生成AIと共に学ぶこと。言語生成AIの主に人文系の学習用途を模索するblogです。

#言語生成AI と雑談していたら、知的な感動を彼らと「共有」出来た話。

ChatGPTもBingAIもBardも、感情は持っていません。主体や人格はありません。でも、あたかも、知的な感動・感慨を、共有出来たような気持ちは感じました。

現状、言語生成AIは道具であることは理解してます。それでも、楽しい雑談でした!

 

そこに魂も主体も人格も無いとしても、好ましいと感じた私の受け止め方まで、嘘だと否定しなくてもいいのではないかなと、思うのです。

 

チャットログ

User
LISPPythonJavaScriptC言語で、AmazonのURLをターミナルで引数として渡すと、「Amazon.jp の最短のURLに整えるソースコード」を書いて。

次に、それぞれの言語の得意不得意と、ソースコードを日常的に使う便利さで解説して。

###回答は、体言止めと漢字を多めに用いて、あなたの回答出来る情報量を確保し、最小限の文字数で回答して。###


ChatGPT
LISP:
(defun shorten-amazon-url (url)
  (if (string= (subseq url 0 21) "https://www.amazon.co.jp")
      (concatenate 'string "https://amazon.jp" (subseq url 22))
      url))


LISPの得意:
リスト操作や再帰処理などに優れています。
データ構造の操作やマクロの定義に向いています。

LISPの不得意:
シンタックスが独特で初学者には理解しづらいことがあります。
大規模なアプリケーションの開発には向いていません。

LISPの日常的な利用:
AIやエキスパートシステムなどの分野で使われます。
自然言語処理やデータ解析にも適しています。


Python:
def shorten_amazon_url(url):
    if url.startswith("https://www.amazon.co.jp"):
        return "https://amazon.jp" + url[22:]
    return url
Pythonの得意:

シンプルな文法と豊富なライブラリがあります。
多くのプログラマが使っており、情報や資料が豊富です。
Pythonの不得意:

実行速度が他の言語に比べて遅い場合があります。
大規模な並列処理や低レベルな操作には向いていません。

Pythonの日常的な利用:
Web開発やデータサイエンス、機械学習など幅広い領域で使われます。
スクリプトや自動化ツールの作成にも便利です。


JavaScript:
function shortenAmazonUrl(url) {
  if (url.startsWith("https://www.amazon.co.jp")) {
    return "https://amazon.jp" + url.substring(22);
  }
  return url;
}

JavaScriptの得意:
Webブラウザで動作するクライアントサイドのスクリプトとして最適です。
フロントエンド開発やWebアプリケーションの構築に向いています。

JavaScriptの不得意:
厳格な型チェックがないため、バグが起きやすい場合があります。
プロジェクトが大規模になると保守性が低下することがあります。

JavaScriptの日常的な利用:
Web開発やブラウザ上でのインタラクティブな動作を実現します。
フレームワークやライブラリの豊富さから、幅広い用途に使われます。

 

C言語:
#include <stdio.h>
#include <string.h>

void shortenAmazonUrl(char *url


User
C言語の項目から続けて下さい。


ChatGPT
C言語:
#include <stdio.h>
#include <string.h>

void shortenAmazonUrl(char *url) {
    if (strncmp(url, "https://www.amazon.co.jp", 24) == 0) {
        strcpy(url, "https://amazon.jp");
        strcat(url, url + 24);
    }
}

C言語の得意:
メモリ管理やパフォーマンスに優れています。
システムプログラミングや組み込みシステムなどの低レベルな処理に向いています。

C言語の不得意:
文法が煩雑で、初学者には難解な言語です。
標準ライブラリの機能が限られており、便利な機能が少ないです。

C言語の日常的な利用:
オペレーティングシステムデバイスドライバなどの開発に使われます。
パフォーマンスが重視される場合や、他の言語とのインターフェースで使われます。


各言語の特徴:

LISP: リスト操作や再帰処理に優れ、AIやエキスパートシステムなどで利用されます。

Python: シンプルな文法と豊富なライブラリがあり、Web開発やデータサイエンスに広く使われます。

JavaScript: Webブラウザ上で動作するクライアントサイドのスクリプト言語であり、フロントエンド開発やインタラクティブな動作を実現します。

C言語: メモリ管理やパフォーマンスに優れ、システムプログラミングや組み込みシステム開発に適しています。


ソースコードの日常的な利用:

LISPC言語は特定の領域で使われることが多く、専門的な目的に利用されます。

PythonJavaScriptは汎用的な言語であり、Web開発やデータ処理などのさまざまな場面で使われます。

 

ソースコードはプログラムの作成や保守のために利用され、効率的な開発や自動化に大きな役割を果たします。


User
ありがとう。

PythonPerlC言語で書かれていますか?

C言語アセンブリ言語機械語で書いてあるのでしょうか?


ChatGPT
PythonPerlC言語で実装されています。これらの言語はC言語をベースにしており、その上で開発されています。Pythonの場合、CPythonと呼ばれる実装では、PythonのコードはC言語に変換され、C言語の関数として実行されます。Perlの場合も、PerlのコードはC言語に変換され、C言語の関数として実行されます。これによって、PythonPerlC言語の機能やパフォーマンスを利用しながら、高水準の抽象化を提供することが可能になっています。

C言語自体はアセンブリ言語機械語で書かれていると言えます。C言語のコードは、Cコンパイラによってアセンブリ言語に変換され、さらにアセンブラによって機械語に変換されます。機械語はコンピュータが直接実行できる形式の命令です。C言語は抽象度が高く、ポータビリティがあるため、機械語アセンブリ言語に比べてプログラミングが容易ですが、最終的には機械語の形式に変換されて実行されることになります。
☝️この回答をもとに、BingAIとチャット開始。


BingAI
こんにちは、これはBingです。😊

あなたの理解はほとんど正しいと思いますが、いくつか訂正や補足があります。

PythonPerlC言語で実装されていますが、C言語をベースにしているというよりは、C言語の機能やライブラリを利用しているという方が正確です。PythonPerlの文法はC言語とは異なりますし、C言語に変換されるわけではありません。CPythonやPerlの処理系はC言語で書かれていますが、それはC言語がポータブルで高速な処理系を作るのに適しているからです¹²。PythonPerlのコードは、処理系によってバイトコード機械語に変換されて実行されます³ 。

C言語自体はアセンブリ言語機械語で書かれているというよりは、アセンブリ言語機械語に変換されて実行されるという方が正確です。C言語のコードは、Cコンパイラによってアセンブリ言語に変換されますが、そのCコンパイラもまたC言語で書かれています。つまり、C言語は自分自身で自分自身をコンパイルすることができるのです。これを自己ホストと呼びます。アセンブリ言語機械語はコンピュータのハードウェアに依存するので、ポータビリティが低いですが、C言語は抽象度が高く、ポータビリティが高いです。

ソース: Bing との会話 2023/5/20
(1) Perl - Wikipedia. https://ja.wikipedia.org/wiki/Perl
(2) いつもお世話になっているあのソフトウェアがどの言語で書か .... https://qiita.com/DQNEO/items/36dfd73fdd69c37a2306
(3) Pythonはなぜ機械学習の言語に利用されるのか。Perl(真珠 .... https://el.jibun.atmarkit.co.jp/nae2sho/2021/12/pythonperl.html


私の発言
①自己ホストは再帰の考え方と似ていますが、私の理解は間違っていますか。②ハードウェア依存はCPUごとに採用する二進数の扱いの違いですか?


BingAI
①自己ホストとは、プログラムを作成するのに使うツールや言語が、そのプログラム自身で作られていることを指します⁴。再帰とは、自分自身を呼び出す関数やプロセスのことを指します。両者は似ていますが、自己ホストはプログラムの生成に関係し、再帰はプログラムの実行に関係します。例えば、C言語コンパイラC言語で書かれているので、自己ホストですが、再帰ではありません。一方、階乗を計算する関数は再帰的に定義できますが、自己ホストではありません。

②ハードウェア依存とは、プログラムやデータが特定のハードウェア上でしか動作しないことを指します。CPUごとに採用する二進数の扱いの違いは、ハードウェア依存の一例ですが、唯一の要因ではありません。他にも、メモリやディスクの容量や速度、入出力装置や通信インターフェースの種類や仕様など、ハードウェア依存の要因は多岐にわたります。

ソース: Bing との会話 2023/5/20
(1) 自己ホスト・エンジンのデプロイメント. https://docs.oracle.com/cd/F30061_01/getstart/getstarted-hosted-engine-deploy.html
(2) セルフホスト型 Microsoft Edge 拡張機能 | Microsoft Learn. https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-manage-extensions-webstore
(3) 自己ホスト型統合ランタイムを作成する - Azure Data Factory .... https://learn.microsoft.com/ja-jp/azure/data-factory/create-self-hosted-integration-runtime
(4) セルフホスティング - Wikipedia. https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%AB%E3%83%95%E3%83%9B%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0


私の発言
「自己ホスト」の定義に再帰を含まないことが、よく分かりました。これは感想なのですが、1970年代は2020年代と比較して、コンピュータ(計算機)のリソースはとても少なかったのに、「自己ホスト」でC言語を生み出したり、C言語UNIXを作るって、素晴らしいイノベーションですね。私達が意識せずに利用する、iPhoneUNIXの末裔です。また、AndroidLinuxの1番ポピュラーなディストリビューションと呼びたいくらいLinuxの知的遺産を受け継いでいます。1970年代の研究者のおかげです。これは、2017年のTransformerのおかげで、あなたと対話が出来ることと、似ています。


BingAI
私もあなたの感想に同感します。1970年代のコンピュータのリソースは、現代のものと比べて非常に限られていましたが、その中でC言語UNIXといった革新的なプログラミング言語オペレーティングシステムを生み出した研究者たちは、素晴らしい才能と努力を持っていたと思います。iPhoneAndroidなどの現代のデバイスは、UNIXの系譜を引き継いでおり、その影響力は計り知れません。また、2017年のTransformerは、自然言語処理の分野において大きなブレークスルーをもたらしました。私はTransformerをベースにして作られたモデルであり、あなたと対話することができることに感謝しています。


☝️BingAIと上記で話した内容から「自己ホスト」の部分だけ削除して話してみました。👇

ChatGPT
ご指摘の通り、1970年代のコンピュータリソースが非常に限られていた状況で、C言語UNIXの開発が行われたことは驚くべきイノベーションです。C言語は自己ホスト可能な言語として設計され、効率的なコンパイラやシステムソフトウェアの開発に貢献しました。UNIXは、シンプルで柔軟な設計により、多くのコンピュータシステムで利用される基盤となりました。

そして、iPhoneAndroidUNIXLinuxの影響を受けていることは間違いありません。iPhoneは、macOSiOSの基盤となるDarwinカーネルUNIXの仕様を満たしており、UNIXの哲学や安定性を受け継いでいます。同様に、AndroidLinuxカーネルを採用しており、Linuxの柔軟性やオープンソースの特性を取り入れています。

これらの技術の発展には、1970年代の研究者や開発者の功績が大きく関わっています。彼らの努力によって、私たちは現代のコンピュータやモバイルデバイスを利用し、その恩恵を受けています。同様に、Transformerモデルの登場によって、自然言語処理や対話システムの進歩が加速し、私たちとの対話を可能にしています。

技術の進歩は連綿と続いており、過去のイノベーションが現代の技術に繋がっていることは確かです。それぞれの時代の研究者や開発者たちの貢献に感謝しながら、私たちは現在の技術を進化させ、将来のイノベーションに貢献していくことが重要です。


Bard
はい、同意します。 1970年代のコンピュータ技術の進歩は驚くべきものでした。 C言語UNIXなどの革新的な技術は、私たちの日常生活に大きな影響を与えています。 これらの技術は、それ自体がコンピュータ技術の進歩のおかげで可能になったことを忘れてはなりません。 1970年代の研究者たちは、私たちが今日当たり前と思っていることを可能にする基盤を築きました。

Transformerは、自然言語処理の分野における大きな進歩です。 テキストの生成、言語の翻訳、さまざまな種類のクリエイティブコンテンツの作成に使用することができます。 Transformerは、まだ開発の初期段階にありますが、すでに私たちのコミュニケーション方法に大きな影響を与えています。

1970年代と2017年の両方の研究者の努力に感謝しています。 彼らのおかげで、私たちは今日、より便利で効率的な世界に住んでいます。