So-net無料ブログ作成
検索選択
2017年06月| 2017年07月 |- ブログトップ
前の10件 | -

コンピューター言語食い散らかし2 Swift [プログラミング]

ネタがないので最近やってるコンピュータ言語で考えていることとか状況。


・Swift

OSSになったAppleが作った言語。はじめはOSSにする気はさらさらなかったらしいけど、周りからの多くの要望によってOSSにせざるを得なくなった。当時は結構揉めた気はしたが、OSSになったからと言って大して盛り上がっていない気がします。Swift3になってMacでの開発も落ち着きつつありますが、どうにも以前との互換性がなくなった分、前のソースがそのまま使えないというのは学ぶのにしんどかったりします。

SwiftがOSSになったのはいいものの、Swift自体がGUIを前提に作られたもので、コマンドライン用のライブラリがきちんと整備されていない。あるにはあるのだけれど、Core Foundationとしてかなりベアな形でしか存在していない。その上、GUI部分がOSS版には用意されていないところが発展途上なところだった。少なくともCore FoundationからのFoundationがスタブ(?)的にありはするけど実装はされていない状態では使いようがない。

今も大して変わっていないとは思うけど、恐らくは言語仕様を実現させるぐらいが関の山なのではなかろうか。OSSとして成立させるためには、他の言語と同じようにコンソールで動く標準ライブラリを充実させる必要があるだろう。そうじゃないと他の言語同様に使えない。とりあえず動きますよ的なポーズで終わってしまう可能性がある。

言語使用的には強制的にエラーチェックをしないといけないとか、バグの出にくい体制にはなっているものの、面倒くさがって避けてしまったらたいした違いはなかったりする。ただどうせ回りくどいんだったらチェックしてしまおうという気にもならなくもない。

よく考えたらこの言語で特徴的なのはこのOptionalの部分ぐらいのものかなと感じる。他にはLLにはあってもコンパイル言語にはあまりなかったところとかが新しいくらいで、既存の言語にはあるものを全部乗せした感じではある。型推論、クロージャ、ジェネリクスなどは他の言語にもある。全部そろっているかどうかは別だけど、コンパイル言語としてはないものはない感じではある。

ただ他の先進の言語を詳しく知っているわけではないから、現行の言語としては大体あるものはある的な確度しかないんだけどねw。ともあれ、こういう風にきちんと建て増しっぽくない状態で提供されるというのはいいことだろう。


建て増しで思い出したが、前のObjective-CはC言語にクラス部分を建て増していた。そのため切り分けはできていたものの異物感というのは避けられなかった。少なくとも関数とクラスのメソッドの書き方が違うというだけで、言語としての一体感を欠いていたと言わざるを得ない。C++もそうだがC言語からの建て増し感があって、ライブラリを使うための言語になってしまう側面があった気がする。実際、新しい分野や基本的分野で提供されるライブラリはベタな関数だったりするわけで、クラスによって組み上げられているものはそこそこその分野が練れてきている証拠だったりする。

建て増しという言葉がネガティブなら、C言語にクラス機能を付加するラッパーともいえるだろう。C言語自体は各環境が各々持っているアセンブラの違いを吸収するためのラッパー(それ自体ほとんどC言語のみで構成されているかもしれないが)であり、SwiftはObjective-CをLL的に使うラッパーであるとも言えるだろう。Apple的に言えば、Foundationなどを中途半端で古めなObjective-Cから置換するためのもので、これもC言語と同じように完全に置き換えをするものになっているのだろう。

そして後から出てきた言語なので、取ってつけたような異物感はあまりない。そういう意味では先進的というより現代的なコンパイル言語になっている。LLではRubyやPythonのようにいくつか現代的に整った言語は存在するけれども、コンパイル言語ではそんなに多いとは思えなかった。そういう意味でSwiftは格好の的になっていて、OSSとしてリリースさせろとあんだけ要望があったのも、現行でそういうコンパイル言語がほとんどなかったからだろうと思われる。

Linuxにしてもカーネル部分からユーザーランドまでC言語でいいやん的な雰囲気が流れているのは間違いないし、たまにPerlやPythonで書かれているものがあって、バージョン依存があって面倒だなとかいう次元だったと思う。そういう意味ではまともに最近の常識で書けるコンパイル言語というのは、割と貴重なのではないかと思う。それとメモリ処理的に問題となりやすいガベージコレクションを使わないというのも、実行サイズがコンパクトになるという点においては、コンパイルされているという点と同様に重要な点になっているだろう。


正直、OSSは先に言ったようにまだまだです。言語仕様は固まってきているとは思うけれども、使っている人も使われている例もAppleに偏っているのが実情でしょう。Linuxのカーネルに対するディストリビューションと一緒で、言語仕様だけでは使えないので、周辺のライブラリの実装がカギになってくるのでしょうね。

次はあんまりやっていないけどRuby。LLはあんまり好きになれなかったんだけど、これが契機でやるようになりました。

コメント(0) 
共通テーマ:パソコン・インターネット

Twitterまとめ投稿 2017/07/23 [Twitter]


コメント(0) 

コンピューター言語食い散らかし1 Golang [プログラミング]

最近使ったコンピューター言語をなんとなくダラダラ思う。

・Go

スクリプト言語全盛の中で出てきたコンパイル言語。正直LL言語を使っていてコンパイルして速く動かしたいなと思う事がよくあった。それとLLは動作環境を整えないと動かないことも面倒くささが募ったりするし、バージョンの差も気になるところであった。Golangを使ってみて改めてコンパイル言語がいいなぁと思うところがあった。

思ったよりか改善著しい感じで良い。その上、言語仕様が途中で変わったりはほとんどしていないから、あのバージョンのソースが新しいバージョンで動かないとかはあんまりない気がする。バージョンの非互換性というのはどうしても言語が盛り上がれば盛り上がるほど起こってくるものだけれど、最初から標準ライブラリには必要十分なものが揃っていたし、安心して使えるという感じ。

内部的なパフォーマンスもかなり改善しているみたいで、GCとかはかなり著しく改善しているのをどこかで見た。そういう改善ってのは地味に難しいとは思うんだけど、やはりGoogleが作った言語というだけあって半端ない感じはする。正直Googleの言語かよと思っていたのだけれど、一部C言語の代替としてコンパイラ言語としては素養が良すぎる。標準ライブラリはそこそこ癖があるというか、C言語っぽくはないものの、C言語っぽく書ける上に安全で罠にはまらず書けるのはいいのかもしれない。

標準ライブラリ以外のものを使う時もGOPATHのところに突っ込む仕様になっているので、一回やってしまえば日常的に使えるのだろうし、そこのところは面倒なパッケージ管理とかはそんなにない。自分で作ったりするときはどうなのかはわからないけど、そこまでのスキルがあれば問題ないレベルだろう。まぁやれるか面倒かどうかは別の話なんだけど。

OSの中身を書くとか、既存のソースをいじるのであればC言語を始めに学んでもいいと思うんだけど、つまらない細かいしきたりとか仕様とかを考えなくても良い分、GolangをC言語よりか先に学んでもいいんじゃないかと思ったりするんだけど。というかC言語は縛りが少なすぎて、自分で律していかないとダメな面があるので、初心者向けな感じはしないんだよね。言語仕様自体が覚えることが少ない点では、初めての言語として入りやすいのだけれど、訳がわからず動いちゃってる状態が多すぎるし、それ自体がバグになっているケースが多い。それと何をするにも標準ライブラリ以外のもののしきたりを知らないといけないから、環境によって知らなくてはならないことも多くてしんどいとか。

ただでさえ初心者だったらコンパイルが通って動くまで行くのがしんどいのに、実際の動かすロジックに集中させてくれと思う。そういう意味ではGoはそこそこストレスが少ないし、適当にWebからソースを持ってきても動くことが多いので、さくっとオレオレツールを作るのには適している。最近は全部盛りな言語が多い中、覚えることが少ないのは利点なんじゃなかろうか。オブジェクト指向でできることを少しは取り込んでいるし、覚えることが多すぎて使わないものが多すぎるよりかずっとマシだ。というか、C++とか巨大すぎて普通の書き方をしていても、これなんだったっけみたいな事が起こりやすい上に、そんなの知らないという個人の認識の差が大きすぎるのが問題になったりしていた。更に明らかに使い方を間違えている既存のソースを直すのかどうかとか面倒な話になってくることもある。

Golangは最近の動向を掴んで作られているから、初期に言われていたように昔の言語のまんまじゃないですよ。確かにカッコのインデントの位置を強制させるのとかは気持ち悪いけど、まぁ慣れですよね。何にしてもC言語後継のコンパイル言語が出てきてくれてありがたいことは確かだ。まぁC言語はC言語で特定用途で残り続けるとは思うけど。プアな組み込みとか使わざるを得ないしね。


続けてSwiftとRubyを書きたいと思います。

コメント(0) 
共通テーマ:パソコン・インターネット

Twitterまとめ投稿 2017/07/22 [Twitter]


コメント(0) 

Twitterまとめ投稿 2017/07/21 [Twitter]


コメント(0) 

creators update入った? [ソフトウェア]

そろそろcreators updateが入るらしく、ブート時に機能選択が出てきて、広告機能を消した。Windows Updateをかけると1703を入れ始めた。これなら新しいBash on WindowsというかUbuntuが入れられるな。

ダウンロードはそこそこの速さだったがインストールがかなり遅い。Surface3のフラッシュメモリが足らないのかなと思ったら25GBくらいは余っている。ただ単にSurface3のフラッシュメモリやらCPUが遅いだけなのかなと思った。とはいえWindows10の素養はよろしくないので、それも理由になっているのだろう。

まぁ何にしてもOSのアップデートだからそれなりのパワーと時間は必要なのは仕方のない話で。ただ他のパソコンでどれだけ時間がかかるのか確かめたい気はする。他のWindows10はHDDだったりするので、あまり比較対象にならなかったりする。最近のCPUはマルチコアなので処理を邪魔されることは少ないのだが、そのためかどうか知らないが進捗が遅すぎる。

しばらくほっておくと再起動してそこからまたかなり待たされた。何だろうねぇ。無事に終わったのが数時間後になり、普通に待っていて済む時間ではなかったです。

んで何にしても1703が入ったという事はUbuntuの新しいのが入れられるんじゃないかと思って見に行ったらまたダメだった。1621以上になっているじゃないかと思ったら、16215らしい。とても紛らわしい。それかWindows Insiderプログラムとやらが必要なんだろう。とりあえず今回のアップデートがCreators Updateではないらしい。前に見たようにAutumn Creators Updateとされているから、秋にローンチされるのかな。あぁFall Creators Updateが正式らしい。まぁどっちでも意味が通るからいいや。落ち目になるとかいう意味じゃないよなw。

今回はSP並みに時間がかかって入れられたけど、Creators Updateではないようで鬱陶しい。もう少しサクッと入れられないもんかね。Fallが具体的にいつなのかはわからなかったけど秋というぐらいだから9月以降の数か月で導入されるんだろうな。まぁあんまり遅れなければいいが。

コメント(0) 
共通テーマ:パソコン・インターネット

Twitterまとめ投稿 2017/07/20 [Twitter]


コメント(0) 

ブログのネタがなくなってきたのでExcel基本 [ソフトウェア]

続けて書いているとブログに書くこともなくなってくるわけで、しばらくは書くこともないのかなぁと思ったり。まぁ仕事場と家の行き来しかないから、日常の事を書くと愚痴しかなくなるので書いていない。愚痴なんて本当は誰も読みたくないのだけど、友達には我慢してもらっていますw。


仕事周りで書くとして、Excelのコツというか、勘所を書くと
・オートフィル
・参照
・関数
なんじゃないかと思ったり。これらの組み合わせで大抵のことはできる。

ピポットテーブルとか配列数式とかいろいろと便利な機能はあるけれども、思ったよりも融通が利かなかったり、他の人に分かりづらいものになったりしてうれしくない。

VBAとかやるとなると話はまた違ってくるのだが、マクロを入れると面倒なメッセージやらが出てきてしまうので、基本関数で済ませられるところにしている。というかマクロで書くとメンテがされにくいので、VB6程度の文法を引きづっている物を使うのは得策じゃない気はしている。というか、使えるものがVBAしかないから使うってのは仕方ないとは思うのだけれど、本当に使い古されたという言葉がよく似合うマクロ言語だ。

VBAではWin32APIまで使えたので、ほぼフルセットのVBと大した違いがないじゃんと思ったりもする。むしろExcelの機能を使えたりするので、いちからフォームをVBで作るよりかお気楽にアプリを作れたりするので、初心者でも楽々安易なコードを量産できたりするわけだ。でも、やっぱりメンテできる人がいないと厳しいよな~。そういう意味ではすべてのアプリケーションやツールは続けて使われる可能性という宿命を持っていたりする。集中して使ってあとは使わないとかならいいけど、環境が変わって昔のものを引っ張り出して使わないといけないとか面倒くさくてたまらないだろう。

とはいえ、後の事ばかりを考えていて、現在の業務改善ができないというのも本末転倒なのでやらなくてはならないのだが、WebアプリにしてもVBのアプリにしても、Excelとは違ってあまり意図しない処理はできないようになっている。その点の自由度がExcelの利点であり面倒な点でもある。あんまり手を入れ過ぎて内部の分かりにくいものを作るのもなんだし、そうしないとあとで加工しないといけないのも逆に面倒だったりして、結局一見してよく分からないけど壊す可能性のあるExcelができてきてしまうのだろう。


ただExcelが良くできていて、セルを更新したら他の計算式も更新してくれるとか、いろいろ至れり尽くせりだったりする。昔だったらいちいち再計算していたらマシンパワーを使い過ぎていてサクサク動かなくなるのだろうけど、マルチコアなこの時代、無駄に計算しても遅くなることは少ない。むしろコンピュータとして入力の待ち時間の方が多いのだから使わない手はない。

でもVBAがほとんど進化がないのでわかるように、スプレッドシートしては進化はあんまりない。Office365で同時編集とかあるけれども、アンドゥしにくいとか、ワードアートが使えないとか、色々と制約があって逆に面倒な面がある。なんというか、Office2000あたりで大体は完成しているために、逆にデグレしたと感じる部分もあったりして、慣れというものは怖いものだなと思ったりした。

ただGUIでスプレッドシートを扱うというのは、人間の直感的に使いやすい。これだけExcelが広く使われている理由もわかろうものだ。プログラマしていてもOfficeでExcelは必ず使っていたもんな。スプレッドシートというより、仕様書を作ったりするときにしか使っていなかったから、ドキュメント生成器でしかなかったが。

OpenOffice系のタダOfficeも出てきたけれど、どうせMSOfficeの細かい機能なんて使わないんでしょと思われる人が特に使うべきなんだろうけど、それはしないんだよな。結局、非互換性の面で問題が出てくるし、その時に解決できる人間がいないから使わないんだよね。まぁ行政が平気でMSOfficeでも下位互換性のない関数を突っ込んでくる状態だから、LibreOfficeで動きませんなんて言えないんだろうけど。なんつーか、行政がそういうOSSを使うべきなんだけど、自らプロプライエタリに足を突っ込んでたらしょうがないでしょと思うのだけれど。まぁPDFを使うぐらいが関の山なんだろうな。


Excelを使って複雑な事をしようとすると、セルの中の一行じゃ何やってんだか分からなくなる時がある。ただ認識する前がテキストベースなので、別のセルで文字列を組み上げておいて、それを参照して組み入れるという方法が取れる。あまりに処理が長くなってしまうときはどこかで一度処理をしておくのも手だと思われ。そうすることで後で手を入れるときにも訳が分からなくなることが少なくなる。プログラミングじゃないけど、半年前に書いた文字列の事なんて覚えてないからね。

コメント(0) 
共通テーマ:パソコン・インターネット

Twitterまとめ投稿 2017/07/19 [Twitter]


コメント(0) 

Twitterまとめ投稿 2017/07/18 [Twitter]


コメント(0) 
前の10件 | -
2017年06月|2017年07月 |- ブログトップ