プログラミング言語別コメント記法

コメントアウトするときのやり方が言語ごとに違うのでネットで探して一覧にしてみました。
ちゃんと表示できるかな。

C++ => // or /* */
swift => // or /* */
JavaScript => // or /* */
CSS => /* */
HTML => <!-- -->
Bash => #
R => #
Haskell => -- or {- -}
Elm => -- or {- -}
vim => "ダブルクォーテーションマーク
Ruby => # or =begin =end
Python => # or """ """ or ''' '''
C => /* */
Markdown => <!-- --> []()
GFM => <!-- --> []()
JSON => コメントはつけられない!!
Java => // or /* */ or /** */
XML => <!-- -->
bat => rem or ::
PHP => // or # or /* */
VBA => ' or rem
SQL => -- or /* */
Objective-C => // or /* */
Tex => % or ¥begin{comment} ¥end{comment}
Perl => # or =comment =cut
JSP => <%-- --%>
VBS => ' or rem
Smarty => {* *}
Scheme(Racket) => ;
ASP => '
Fortran => c or * or !
aspx => <%-- --%>
J(プログラミング言語) => NB.
Scala => //
Lisp(CLisp) => ;
Clojure => ;
Go => //
Hy => ;

JupyterでPythonの勉強

Jupyterでいろいろ遊んでいるのですが、

Jupyter-nbconvert --to markdown notebook.ipynb

でマークダウンに変換できるということしりました。
ダウンなので情報量が減ってしまうのですが、そこそこ感じがつかめます。
ので以下、ご紹介。
本物のノートブックはhttps://github.com/kalz2q/files.gitにあります。


Pythonが苦手です。どうやってべんきょうしたらいいですか。

なぜPythonが苦手と感じるかと自己反省してみると、この収拾のなさというかいい加減さが覚えにくい。
なんらかの思想で統一されているとそれを頼りに記憶のわくぐみをつくるのだが、とかなんとか言う前に勉強しよう。

というので立ち上げたJupyter notebookですのであまり期待しないで進みましょう。

文字列がわかりません。
質問 charはあるのですか。見つからないのでないのではないか。 まあいいいか。

変数は事前に定義するのかどうか。突然x=3とか使っていいの。
やってみてください。 べつにいいみたいです。
3 + "5"とかしたらさすがエラーになりました。

質問フラグと問題フラグについて。

あとで質問で検索したり、問題で復習したりするために、適宜質問と問題という表題を立てますが読むときはあまりきにしないでよい。

問題 色のリストについて文字数のリストを作る。append()を使う。

colors = ["yellow", "red", "green", "blue", "purple"]
colorlength = []
for color in colors :
    colorlength.append(len(color))
print (colorlength)

質問 連想配列(dict、hash)はどうやって作るのですか。
質問 リストからzipで簡単に作れますか。例えばzip(colors, colorlength)とか。
質問 いちいちprintした方がいいですか。それとも変数を素でうちこむのがいいですか。

zip()という関数があった。
思っていたのとはだいぶ違うが例を転記してみる。実験。うむ、これは便利かも。

days = ['Monday', 'Tuesday', 'Wednesday']
fruits = ['banana', 'orange', 'peach']
desserts = ['tiramisu', 'ice cream', 'pie', 'pudding']
drinks = ['coffee', 'tea', 'beer']
for day, fruit, drink, dessert in zip(days, fruits, drinks, desserts):
    print(day, ": drink", drink, "- eat", fruit, "- enjoy", dessert)
english = 'Monday', 'Tuesday', 'Wednesday'
french = 'Lundi', 'Mardi', 'Mercredi'
dict( zip(english, french))
list(zip(english,french))

list()とかdict()とか変な関数ですね。

range()list()で囲むと数列ができる。
おー、これは便利。

list(range(10, -1, -1))

さて、それ以前にPython dictionaryがわからないのでテキストを読む。

{}で作成する。

bierce = {
        "day": "A period of twenty-four hours, mostly misspent",
        "positive": "Mistaken at the top of one's voice",
        "misfortune": "The kind of fortune that never misses",
        }
bierce["day"]

問題 色のリストについて色名をキーに文字数をvalueにした辞書を作る。できた。

colors = ["yellow", "red", "green", "blue", "purple"]
colorlength = []
for color in colors :
    colorlength.append(len(color))

dict(zip(colors,colorlength))
{'blue': 4, 'green': 5, 'purple': 6, 'red': 3, 'yellow': 6}

ファイルを一度に読み込む方法

Jupyterを使ってC++を勉強しています。


Jupyter上なので標準入力の代わりに、stringからデータを読み込んであとの処理で使う、という方法をとっているのですが、テキストファイルを一度に文字列に取り込めないかな、と思い、調べてみました。

c++ read entire text file into string

とかで検索したところ、

std::ifstream t("file.txt");
std::stringstream buffer;
buffer << t.rdbuf();

という解答があったので、Jupyterのセルで実験してみました。

# include <bits/stdc++.h>
using namespace std;
string s;
ifstream ifs("./mycpp/input.txt");
stringstream ss;
ss << ifs.rdbuf();
s = ss.str()

これで、変数 s の中にファイルinput.txtの内容が、空白や改行も含めて全部取り込まれました。

成功です。

JupyterでC++のサンプル

Jupyter上でC++を試行錯誤しながらやったのを、HTMLで書きだしたのを、このブログで紹介しようと思ったのですが、なんだかうまく行きません。



Jupyterのノートの形で見て、触ってもらうのが一番なので、githubに入れておいたので興味のあるかたは



1. JupyterにC++カーネルをいれて(前回の記事参照)

2. https://github.com/kalz2q/files.gitからlearncpp.ipynbをダウンロードして触ってみてください。


htmlにしたもの(learncpp.html)もアップロードしておいたので、見るだけならそれでも見れます。


以上


キーワード: Jupyter notebook, sample, C++11, C++14, C++17

JupyterでC++

Jupyter notebookでC++を使って勉強するのは、基本的には無理です。

なぜならC++コンパイラーであって、Jupyterにのるのはインタープリター言語だけだから。

ところが!!

C++スクリプトとして使う環境があってClangとかClingとかなのですが、それならJupyterのkernelとして使える。


そのインストール手順をまとめました。
このメモ見ながら他のマシンにもインストールできたので、まず大丈夫だと思います。

Jupyter上ではC++17という名前になります。

下記でubuntu16というのはubuntuの16.04という環境ということで、17の人やこれから出る18の場合は読み替える必要があります。

インストール手順

https://root.cern.ch/download/cling/
からバイナリーをダウンロードする。Ubuntu用しかない。
cd ダウンロード
解凍(展開)する。
cd cling_2018-03-26_ubuntu16
cd bin
./clingでclingが使えることを確認する。".q"で終了
cd ../..
mv cling_2018-03-26_ubuntu16 ~/
ダウンロードの中では変なので自分のフォルダーの一番上に持ってくる。
cd
export PATH=~/cling-install-prefix/bin:$PATH
あとで".bashrc"にも対応すること。
次にshareの中のkernelのところに行く。
cd /cling-install-prefix/share/cling/Jupyter/kernel
pip install -e . を実行する。
次にjupyterにcling kernelをインストールする。
jupyter-kernelspec install ~/cling_2018-03-26_ubuntu16/share/cling/Jupyter/kernel/cling-cpp17 --user
最後に好きな場所でjupyter notebooを起動して、NewにC++17があることを確認する。

JupyterのHTMLファイル

 以下はJupyterで作ったページ(filename.ipnb)をJupyterでhtmlにしたものをはてなのhtml編集で書きだしたものです。
すこし問題はあるけど、まあまあそのまま使えている。
----

最初に、ということになるのかな

JupyterにR言語で云々。なのですが、Jupyter notebookで書かれたR tutorialとかない。 自分で勉強するしかないのか。まあいいか。

まずは四則演算から

実行してみて下さい。実験して見てください。

In [1]:
1+3
 
4
In [2]:
10+4*(3/4+100)+1011
 
1424
In [7]:
3^2
3**5
 
9
 
243
In [14]:
10 / 7
 
1.42857142857143
 

割り算が%とかdivとかmodとかは実験したところエラーなので云々。

 

環境

いまの環境はubuntu 16.04。anacondaでpythonやjupyterを入れた。

 

conda install r-essentials conda install rstudio conda install anaconda-navigater

 

とかした。

anaconda-navigatorはとりあえずエラーで動かない。rstudioは画面が小さくてなんとかしなくては。

とりあえず、jupyterのNewメニューでRが選べる状態。 これはこれで大成果だと思う。これがなければRの勉強なんかしていない。

マークダウンの中で上のcondaの例のように<pre><code></code></pre>で書きたい時はどうするのか。 ひょっとするとただそう書けばいいかも。やってみよう。


conda install r-essentials
conda install rstudio
conda install anaconda-navigater

うむ。なんかとても冗長になるが、まあいいか。できた。文中の<code>はバッククォートで囲めばよかった。ということは云々。

conda install r-essentials
conda install rstudio
conda install anaconda-navigater

これはどうだ。バッククォート3個で囲んでみた。

いまやりながらインデントの実験していたら、キーボード・ショートカットのCtrl-]インデント、Ctrl-[インデント英語キーボード日本語キーボードに対応していない!! ま、いいか。Jupyterのキーボード・ショートカットは理不尽なのでどうせなんとかしなければいけない。編集して云々。

Jupyterのキーボード・ショートカットの逆の逆引き辞典

Fキー: 検索と置換
Ctrl-Shift-Fキー: コマンドパレットを開く
Ctrl-Shift-Pキー: コマンドパレットを開く
Enterキー: 編集モードに入る
Pキー: コマンドパレットを開く
Shift-Enterキー: セルを評価して、下のセルを選択
Ctrl-Enterキー: 選択したセルを評価
Alt-Enterキー: セルを評価して、下に新規セル挿入
Yキー: コードモードに
Mキー: マークダウンモードに
Rキー: raw(テキスト)モードに
1キー: 「見出し1(大見出し)」で書き出す
2キー: 「見出し2(中見出し)」で書き出す
3キー: 「見出し3」で書き出す
4キー: 「見出し4」で書き出す
5キー: 「見出し5」で書き出す
6キー: 「見出し6」で書き出す
Kキー: 上のセルに移動
Upキー: 上のセルに移動
Downキー: 下のセルに移動
Jキー: 下のセルに移動
Shift-Kキー: 上のセルを複数選択
Shift-Upキー: 上のセルを複数選択
Shift-Downキー: 下のセルを複数選択
Shift-Jキー: 下のセルを複数選択
Aキー: セルを上に挿入
Bキー: セルを下に挿入
Xキー: セルを切り取り
Cキー: セルをコピー
Shift-Vキー: セルを上に挿入してペースト
Vキー: セルを下に挿入してペースト
Zキー: 削除したセルを戻す
DDキー: 選択したセルを削除
Shift-Mキー: セルを統合・結合
Ctrl-Sキー: 保存とチェックポイント
Sキー: 保存とチェックポイント
Lキー: セルの中の行番号を表示
Oキー: 選択セルの評価結果を表示
Shift-Oキー: 選択セルの評価結果をスクロール表示
Hキー: ショートカットキーを表示
IIキー: カーネルを中断
00キー: カーネルをリスタート
Shift-Lキー: 行番号を表示/非表示
Shift-Spaceキー: 上にスクロール
Spaceキー: 下にスクロール
Tabキー: コード自動補完、インデント
Shift-Tabキー: ツールチップ(tooltip)
Ctrl-]キー: インデント
Ctrl-[キー: インデント消す
Ctrl-Aキー: 全選択
Ctrl-Zキー: 元に戻す
Ctrl-/キー: コメント
Ctrl-Dキー: 行を削除
Ctrl-Uキー: 選択をやり直す
Insertキー: 挿入/上書きモード切り替え
Ctrl-Homeキー: 最初のセルに移動
Ctrl-Upキー: セルの最初に移動
Ctrl-Downキー: セルの最後に移動
Ctrl-Endキー: 最後のセルに移動
Ctrl-Leftキー: 1単語左に移動
Ctrl-Rightキー: 1単語右に移動
Ctrl-Backspade: 左の単語を消去
Ctrl-Delete: 右の単語を消去
Ctrl-Yキー: やり直す
Alt-Uキー: 選択をやり直す
Ctrl-Mキー: コマンドモード
Ctrl-Shift-Fキー: コマンドパレットを開く
Ctrl-Shift-Pキー: コマンドパレットを開く
Escキー: コマンドモード
Shift-Enterキー: セルを評価して、下のセルを選択
Ctrl-Enterキー: 選択したセルを評価
Alt-Enterキー: セルを評価して、下にセルを挿入
Ctrl-Shift--キー: セルを分割
Ctrl-Sキー: 保存とチェックポイント
Downキー: カーソルを下に移動
Upキー: カーソルを上に移動