はてなキーワード: powershellとは
プログラミングを学ぶなら、ゆくゆくはネットワークの話とかも知っていかないといけない。
あと環境依存ではないプログラミングの手法に、できれば最初から触って欲しい。
そんでプログラミングの基本はターミナルでコマンド入れて"Hello, world"だけど、それをコマンドプロンプトとかPowerShellでやるのは微妙。
そう考えるとできるだけUNIX系か、それに近いインターフェースを持つOS上でプログラミングしたほうがベター。
だから理想を言えばLinuxでプログラミングを学ぶのが一番だけど多分ハードルが高すぎるので、macでもいい。
もちろん、これは「欲を言えば」くらいの話ね。
Windowsでプログラミングを始めるのは「良くはない選択」だが「絶対に避けるべき」という話でもない。
だからWindowsのコマンドプロンプトやPowerShellでプログラミング事始めというのも「まあ仕方ないか」みたいな感じ。
あとVSCodeとかの統合開発環境は覚えたほうがいいけど、初学の段階で学ぶ必要はないと思ってる。
確かに「統合開発環境を使いこなす」ことは現在の開発だと基本なんだろうけど、かといってプログラミングの本質ではないので。
Windowsだったら追加インストールなしでPowerShellの機能でテキスト処理してもよさそう
大体の場合において「bashが欲しい」という人はbashだけではなくgrepやawkやその他諸々のgnu ツールもまとめて欲しているが、それらを合わせてもwindows上で使うPowershellには機能レベルで遠く及ばないし、windows上のbash単体はLinux上のPowershell単体にも劣る。
Powershellでは、「文字列しか通さない古いパイプを通して文字列を切り貼りして受け渡しながら処理をする」なんて面倒なことはない。
bash+gnuツールだと別コマンドで文字列切り貼りしなきゃ取得できないメタデータも、Powershellならパイプでオブジェクトを渡せるから始めからオブジェクトのプロパティとして付いてくる場合が殆どだ。
windows上なら.net経由でシステムの様々な部分へのアクセスも可能だし、COMObject経由でofficeソフトそのものを直接操作もできる。
サードパーティーのモジュールで無理矢理データを弄るんじゃなくて実際にofficeファイルを吐くプログラムそのものをPowershellから操作できる。
なので、Powershellの記事によく付く「こんなのよりbash(+gnuツール)使いたい」ってのは「LinuxでPowershell使いたい」って言ってるようなもんだって分かって欲しい。
windows上においてはbashはPowershellの肩代わりは出来ない。
少し前からLinux上でPowershell動くようになったけど、LinuxユーザがPowershell一から学ぶ価値あるかと言われると、はっきり言って「あんまり無いかな」とは思う。
azure関連のコマンドモジュールがPowershellしかないヤツもまだあるみたいだから、azure触るためだけにwindows用意しなきゃならない事態を防ぐ程度の意味合いしかないような気はする。
そういうモジュールがLinux上のPowershellに対応してんのか知らんけど。
WSLでLinuxが丸々windowsに取り込まれたおかげでカジュアルなwindows上のbash需要も殆どは満たせる時代になったのは良いことだ。
別にPowershellのことを詳しく調べろとは言わないが、bashじゃwindows上のPowershellの肩代わりは出来ないって事だけは覚えておいて欲しい。
9割がVBAと言っていい
pythonだのtypescriptだのといった今をときめくプログラミング言語を使えと言われてもそもそも無いんだ
となると使える武器はWindowsに標準でインストールされているVBS、Powershell(めっちゃバージョン低い)、コマンドプロンプト、IE(めっちゃバージョン低い)で走らせるjavascript、そしてOfficeに付いているVBAしかないわけだ
こいつらを縦横無尽に組み合わせてなんとか使えるツールを作りゴミみたいな定例業務の効率化を図るのだ
そうした時に便利なのがwinAPIだ
VBAでwinAPIをdeclareすればマウスの自動操縦からウィンドウの操作、何から何までできる
社内イントラに設置されたカスみたいな入力フォーム(IE)をウィンドウ名で捕捉し、オブジェクトに代入してjavascriptを流し込むのだ
$ffparam = "" $inputs = "" $lists = Get-Clipboard Write-Output $lists foreach ($pms in $lists) { if($pms.Contains("curl")) { $inputs += $pms.Replace("curl","-i") } if($pms.Contains("user-agent")) { $ffparam += $pms.Replace(' -H "user-agent: ','-user_agent "') continue } if($pms.Contains(" -H")) { $ffparam += $pms.Replace(" -H","-headers") } } $ffparam += $inputs $ffparam = $ffparam.Replace("^","") $ffparam += "-c copy -movflags faststart -bsf:a aac_adtstoasc" Set-Clipboard $ffparam
なんか以前からずっと思ってたんだがRailsというかRuby界隈は宗教というか自己啓発ビジネス臭さえするのがイヤだ
金持ち父さん…とか7つの習慣とか、そういう詐欺のカモっぽい人も多いイメージがある
しかし、Ruby登場当初からやたらとエレガントに書ける、スッと書ける(この「スッ」という表現も詐欺で多い表現なので嫌い)とか、
そんなことは個人的にはどうでも良くて、ソフトウェアを使うユーザーは機能が便利かとかそういう視点でしか見ない、悲しいけど
保守の観点からも美しいソースコードを書こうという意気込みは間違っていない、というか正しいと思う
しかし、プログラマーが美しいコードが書けたと悦に浸る、自己満足におちいっているだけのようにも見えるのが納得いかない、不愉快にさえ思える
C++やJavaのような型のあった時代から、型なんてダセーよな、プレステの方が全然おもしれーよな、を経て、また型に戻ってきてる
型推論云々にかまけてパフォーマンスよりも綺麗なコード、富豪プログラミングからまた元に戻ってきてる
学習コストが高いものほど評価されるような傾向も個人的には感心しない
どうせ同じゴールなのに、そこに辿り着く方法が険しいほど評価されるなんて、プログラマーの美徳の怠惰だのから逆行している
実によろしくない
そういう点ではRustよりもGoやC#の方が評価できる気がする
もちろんRustの守備位置はそこではない気もするので単純比較はおかしいのだけど、ゴールが同じなら自分はC#やJavaで書いて終わらせるのにと思うことがある
別にWebだけでなくコマンドラインでの捨てコードにPHPやJavaScriptも適している
そういう意味ではPythonはやはり強い、Glueだからだろう
正直PHPなんかよりPythonの方が言語としてはおかしい気もするのだけど、正しいとかエレガントが生き残る条件ではないのである
しかし、学習コストとしては低いシェルスクリプトは便利ではあるが流石に古いというか罠が多い気がする
PowerShellの方が使える気がする、少なくともWindowsでは優先的な選択肢になった
生き残るというのはそういうことではないのではないか
PowerShellでもディレクトリとファイルを得るコマンドは Get-ChildItem なので表現に苦しんでいることが伺える。