-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.ts
40 lines (29 loc) · 4.85 KB
/
main.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { Configuration, OpenAIApi } from "openai";
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const completion = await openai.createCompletion({
model: "text-davinci-002",
prompt: `
原文:
動的型付け言語では書く必要がなかった型注釈を、TypeScriptでは基本的には変数ごとに書いていくことになります。そのため、動的型の言語からTypeScriptに入ってきた人の中には、コードの記述量が増えて面倒に感じる人がいるかもしれません。型注釈の記述は「コスト」と考えることもできます。(それを省力化する「型推論」という仕組みもありますが、ここではその説明は割愛します。)
そもそも型注釈の目的は何なんでしょうか?それは、プログラマがコンパイラに「この変数の型は何であるか」を教えることです。型注釈があると、たとえば、コンパイラがminus()関数を処理するときに、「x変数はnumber型でなければならないのか。じゃあ、string型を代入するようなコードは間違いだな。エラーにしてプログラマに教えてあげよう」といったような働きをしてくれるのです。
コンパイラは、細かく問題を指摘してくるので、鬱陶しく思うかもしれません。ここは見方を変える必要があります。コンパイラは「あなた専属のコードレビュア」なのだと。バグに気づかずリリースしてしまい、大問題となって発覚するといった経験はないでしょうか?コンパイラはそういったことに至るずっと前の段階で、問題点を教えてくれる頼りになる存在です。
コンパイラも決して全知全能ではありません。ちゃんと型を教えてあげなければ、いいコンパイラに成長しません。逆に型注釈をちゃんとしていけば、多くの問題に気がつく賢いコンパイラに育っていきます。この観点に立つと、型注釈はコストではなく、コンパイラを正しく育て、バグを未然に防ぐための「投資」と考えることができるのではないでしょうか。
要約:
1. 型注釈の目的はプログラマに間違えを伝えることです。
2. コンパイラは問題を早期に発見する頼れる存在です。
3. 型注釈はバグを未然に防ぐ投資と考えるべきです。
原文:
TypeScriptはJavaScriptのスーパーセットです。スーパーセットというのは、JavaScriptの仕様はそのままに、それにTypeScriptならではの新しい機能や利点を追加したものという意味です。つまり、JavaScriptのコードはそのままTypeScriptのコンパイラが理解できるのです。
この特徴により、開発陣が得られるメリットのひとつが、JavaScriptの知識があればTypeScriptを使い始められるということです。これは新しい言語の学習コストをとても緩やかなものにしてくれます。新言語の導入となると、難しい言語だと学習に数ヶ月要し、そこからやっと書きはじめるということもありえますが、TypeScriptの場合はひとまずJavaScriptとして書き始め、少しずつTypeScriptを学んでいき、徐々にTypeScriptの恩恵を最大化するようにコードを手直ししていくといったアプローチが可能です。TypeScriptにはJavaScriptにはない数多くの機能がありますが、どれも選択的に導入していくことができます。
JavaScriptのスーパーセットであるということは、裏を返せばJavaScriptを知らないといけないということでもあります。なので、TypeScriptをJavaやC#のようなものだと期待していたり、JavaScriptを学ぶつもりがまったくないとすると、TypeScriptでの開発はフラストレーションになるかもしれません。JavaScriptでいわゆる「罠」と言われるような注意すべき言語仕様は、TypeScriptでもそのままというものもあります。JavaScriptにまったく触れたくないならTypeScriptは適していませんが、JavaScriptを使うつもりでいたのならTypeScriptは有力な選択肢になるでしょう。
要約:`,
max_tokens: 200,
temperature: 0, // 0であれば完全に確定的な文章を出力するので、毎回同じ文章を生成します。
top_p: 0, // 小さくすればするほど候補が確率の高いものに絞られるため、確定的になっていきます。
best_of: 1,
stop: "4.", // Markdownの順序つきリストが4つになったら補完を止めるという指示。つまり、要約を3つまでに抑制できる。
});
console.log(completion.data.choices[0]);