はてなキーワード: VB.NETとは
理由くらい書けよ糞が
他のWindowsプログラムがやっていて、多くの方が「できて当然」だと思っていることは、7割くらいであれば.NET(フレームワーク名)を叩けばできます。
.NET対応言語はC#、VB.NET、J#、F#、JScript.NET、C++/CLIなどがあり、実際の開発においてはこれらの中から自分に合った言語を選ぶことになります。
個人的な感想ですが、この中で最もゆとり仕様なのはC#です。StackOverflowなどのノウハウが一番蓄積されているのもC#だと思います。
「頻繁なアップデートを追跡しないといけない」「Visual Studioが必要」という問題はありますが、がんばってください
なお、.NETはメモリを食うので、数値計算みたいなことをしたいのであればC++が現状一番まともだと思います。がんばってください
昔のMacのプログラムのGUIはCarbonというライブラリで作っていました。今はCocoaというライブラリで作っています。
残念なことに、どちらも言語はObjective-Cです。がんばってください
ブラウザアプリは、ユーザのWebブラウザ(Chrome、Firefox、Opera、Safariなど)上で動作するシステムと、遠隔のサーバ上で動作するシステムが連携して成立します。
従って、ブラウザアプリを作る言語は、サーバ用言語とクライアント用言語の2種類を考えなければなりません。めんどくさいですね。
ひとたびそのめんどくささを突破してしまえば、Webブラウザさえあればどこでも動くようになります。素晴らしいですね。
クライアント用の言語は、まぁ、JavaScriptしかないと思います。がんばってください
JavaScriptも(正直なところ)あまり褒められた言語ではないので、近頃ではもうちょっとまともな言語を作って、それをJavaScriptに変換する方法が取られたりします。CoffeeScript、TypeScript、Haxeとかですかね。がんばってください
JScriptとかいう、名前が紛らわしい上にゴミブラウザ上でしか動かないゴミ未満言語もありますけど、そんなもんで作っても私の環境では動かせませんので悪く思わないでください。
そもそも選択肢が全くありませんので仕方がないです。がんばってください
Xamarinがあるじゃないかって?まぁそういうのもあるかもしれませんね。がんばってください
私の勉強不足で、Java以外の選択肢は知らないです。Java以外にあるんですかね?
Perlは使い捨てスクリプトを作るのに適しています。CPANクライアントは昔から安定して動きません。だいぶオワコン化してます。がんばってください 私は鞍替えしました
PythonはPerlより見た目がすっきりしたPerlです。easy_install・pipはすごく安定していてびっくりします(Windows除く)。3系とかいう邪念は捨てて2系教の悟りを開きましょう。がんばってください
RubyはPerl(の処理系のソースコード)より(処理系のソースコードが)綺麗なPerlです。私の手元のUbuntuで「ruby」と入力すると「Command not found.」と返ってくることからも解るとおり、多くの*NIXではOS標準でインストールされておりません。昔のgemは何故あんなにすごい時間をかけてrdocを作っていたのでしょうか。日本人が作ったのでムラ意識の強い日本人の仲間が大勢います。他の国は知りません。がんばってください
これ以上言語を増やすのはやめましょう。バベルの塔で大勢の人間が不幸になったのに、それを人間が自ら引き起こしてどうするんですか。
言語処理系を作るのであれば、BNFという言語で文法を定義して、yacc・bisonというツールに食わせればひな形ができます。ぶら下がりelseとの格闘が待ってますが、がんばってください
1からOSを作った方もいますが、デバイスドライバの流用などを考えると、だいたいはLinuxやBSDのソースコードを改変するお仕事だと思います。
昔はCGIと言っていました。所詮は80番ポートでlistenするだけのプログラムであり、BSDソケットをlistenできるライブラリを有する言語であれば何でもいいのですが、いくつかの宗教があります。
PHPはバンドネオンと同じくらい習得が困難な言語なのに、宣伝の仕方を間違えたために「自分はできる」と勘違いしたプログラマが暴徒と化し、イスラム教と同じくらい不当に低く評価されている言語です。きちんと勉強して使う分には、悪くない選択肢だと思います。がんばってください
Javaは、Eclipse・Netbeansといった超重量級IDEを起動して、Java EEやSpringといった超重量級ライブラリに依存したwarを、Jboss・WebSphereなどの超重量級アプリケーションサーバ上で動作させるため、メモリが貧弱な環境ではIDEとサーバを同時に起動すらできません。サーバのメモリが潤沢であれば悪くない選択肢だと思います。がんばってください
C#は、選択肢が全くないことを除けば、状況はJavaとあまり変わりません。Microsoftがお好きな方、何かの間違いでWindowsサーバを使わざるを得ない方であれば、悪くない選択肢だと思います。がんばってください
あと、注意点!!として
C#やVB.NET(Nothing) では、 (null == null) は true ですからね。でないと、if(disposedObject == null) {...} という構文が成り立たなくなってしまう。。
http://msdn.microsoft.com/ja-jp/library/2cf62fcy.aspx
http://www.atmarkit.co.jp/fdotnet/csharp20/csharp20_04/csharp20_04_05.html
C#でもVB.NETでもLINQを使うときには、結局RDB的な考え方をするからね。おのずとNullableな変数が必要なシーンがでてくるわけだ。
http://msdn.microsoft.com/ja-jp/library/bb738687.aspx
条件式 FALSE=FALSE と NULL=NULL での違いも、NULL の存在意義かも。
swiftをJavascriptとかLLみたいに言ってる人沢山いたけど、あれって変数宣言がvarだとか、見た目がスッキリしてるとかそういう印象だけで言ってるんだよね。
以前、C#に型推論が導入されたときも(っていうか今でも)動的型やバリアント型と区別がつかなくて「使うな」「バグの元」みたいに言ってる人よくいたし。
あと、C++, Perl, Java, C#, Javascriptあたりをまとめて「C系の言語」と言ってPythonやらRubyみたいな言語と比較する文脈で「似てるから」おぼえやすいとかいう人とか。
VB6をやっていてVB.NETなら移行しやすいと思っていて「ぜんぜん違う言語だよ」って言われて驚く人とか。
共通のキーワードを使ってるとかぱっと見た目が似てたら、同じような言語と思ってしまう層がけっこうな量で存在するみたいで、そういう人たちも一応コードを書けてるんだよね。
WMI を使うのが早いようだ。
スナップショットをとるときは、Win32_ShadowCopy で Create メソッドを発行。
http://www.wmifun.net/library/win32_shadowcopy.html
C# や VB.NET から利用するとき、API とか、有志による .NET モジュールとかもあるけど、WMI を利用したほうが手間が少ない気がする。
http://msdn.microsoft.com/en-us/library/aa384648.aspx
http://www.codeproject.com/Articles/22745/Volume-Shadow-Copies-from-NET
※以下、言語というくくりでの話ではなくて漠然とPC用プログラム作成環境全体を指して言っていると思っていただきたい
基本的には.Netが好きだ。
Webを最初から意識して作られているし、標準ライブラリでカバーされてる範囲が広いおかげでVisual Studio入れるだけでサクサクかける処理が多いので再発明を強いられる事態に陥りにくいのが感涙ものだ。
C++/CLIもやりたいことが割とリーズナブルなコストでできるのでありがたい存在だ。
VB6は嫌いだ。
いろいろ拡張してくれた結果なのは知っているが、結局大事なところはダメ言語のままでMSから匙を投げられた存在という認識だ。
MFCも嫌いだ。
ひたすら面倒いし、出来たコードのメンテナンス性も・・・。メリットが今となっては動作の軽さだけだし(昔はむしろ逆の立ち位置だったんだろうが)。
だが、VB.Netは好きだ。
MSILを作るための道具であるがゆえに、VB6の痛い所が根こそぎ取り払われていると感じる。
C#でもいいのだろうが、セミコロンはなくても良いじゃない(あっても良いけど)。あと、オブジェクトを変数宣言しつつ初期化するとき、"クラス名 変数名 = new クラス名()"になるのが
クラス名をSystem.XXXから書いているときには耐えられない。As New万歳。
しかし悲しいかな、VB.NetはC#に押されて絶滅危惧種だ。
TypeOfを使わなくちゃいけない時にはVB.Netが恨めしく感じるけど、そんなに頻繁じゃない。
他のデメリットにしても、表記がウザくなるだけで書けない処理があるわけじゃない(このへんがVB6と決定的に違うところ)
Joel氏の採用面接ゲリラガイドにもあるように、デキる開発者と一緒に仕事をしたいというのは、開発者なら誰でも思うことだ。
そこで、自分が面接する側だったら、初歩の初歩レベル、即ちプロとしてあり得ないレベルの人を足切りするような、くだらない質問を2つ考えてみた。
Java、VB.NET、C/C++、PHP、Perlといったオープン系では広く普及している言語で、ごく普通のPCやサーバで動作するコードを想定し、実装方法を考えてもらうというもの。
ここでポイントとなるのは「プログラムに正解はないが、明らかな間違いはある」という考え方。
つまり2つの質問に対して、明らかに間違った回答をしてきた人が失格ということ。
では上の問いで想定している明らかな間違いは・・・
どっちも教科書でよく見るやり方だけど、仕事でそれやるのは頭悪すぎて話にならないということで。
ちなみにそれぞれの質問で何を見ているか、デキる開発者には一目瞭然だと思うけど、説明すると
結局、コードを書くときに一番大事なのはそういう能力であって、間違っても努力や気合じゃないってこと。
http://social.msdn.microsoft.com/Forums/ja/vbgeneralja/thread/77d40a3f-d7ce-46bb-bef0-24474f17733f
アプリケーションフレームワークを有効にして「シャットダウン時にMy.Settingsを保存する」にチェックを入れたけど、プログラムによる変更内容が保存されない。
アプリケーションイベント MyApplication_Shutdown へコードを書いたから?複数のスレッドで My.Settings を使いあってるから?
とりあえず
MyApplication_Shutdown に My.Settings.Save を追記したら保存されるようにはなったけど。
http://anond.hatelabo.jp/20110713154506
先ほどの事象はWindows7上のVB.NETデバッグで発生。
これを「管理者として実行」により起動させたところ、懸案部分は例外発生せずにうまく通過。
該当箇所は「イベントソース登録がなかったらソースを登録する」という処理で
その後の(一般ユーザ?で動かす)デバッグでSouceExists()の例外は出なくなり、うまく通過するようになりました。
System.Diagnostics.EventLog.SouceExists()の戻り値
・WindowsXP, 2003
True か False
・WindowsVista以降, 2008以降
True か False か SecurityException
これは弊社だけの事かもしれないけど、どうも「人材の育成」ってのに全く関心が無いように見える。なんでもかんでも「即戦力」ばかり求めていて、自分個人的にはお話にならない。
密室会議でプロジェクトの体制が決まるのだが、だいたい自分の担当範囲は「その他」と書かれている事が多い。
基幹部分はVisualStudioで、だいたい、VB.netで書かれたプログラムで目立つところばかり。でも別に基幹部分とはいえ、クリティカルな部分は無くて、万が一止まってしまったら、リブートすればいいだけ。この部分は、たいてい他の人に取られている。
で、自分に割り振られる「その他」ってのは、VisualStudioで、VB.netとVC++で、主にネットワークとミドルウェア、ドライバの部分、他のマシンでUNIXのX-Windowだったり、Webサーバ、Webアプリ、Oracleデータベースだったり、組み込みマイコンのOS、ドライバ、アプリの担当となる場合がある。
ちょっと待ってよ。なんでVBの部分は数人で作っているのに、その他のクリティカルで多様な部分は俺独りなのか?
聞いてみた。
「誰も出来ないから」
は?
俺だって生また時から出来るようになったわけじゃねーよ。誰も出来ないなら育てろよ、と言ってみた。
意味わかんねーし。
でも、最初から担当出来るならまだまし。たいていは、「出来ない部分」は外注に発注する。
そして、外注が失敗する。
その尻ぬぐいが俺になるパターンが9割を占める。
勘弁してくれ……。
自分の課の人員動向を見ていても気になる部分がある。課長や係長の様子を見ていると「使えない」と判断したら他の課に回してしまう、けど、教育はしない、みたいに見える(でも、部から外へは出ない)。
なんかおかしくないだろうか?
先述の外注の件も、「社内で遊んでいる人員がいるけど、技術が無いから、外注に出す」パターンで、結果、外注に踊らされて「動かないコンピュータ」が出来上がってくるパターン。
外注と話をすれば、(まぁ、だいたい15分も話をすれば)、相手がどのくらい出来るかどうかなんて判断出来る。たいていの場合「無理じゃね?」「これじゃ出来ないのあたりまえじゃね?」という結果が俺の脳裏をよぎる。でも、何故か、外注に発注する事になる。
おかしいよな。だって「社内に遊んでいる人員」がいるのに「外注に出す」ってなんなのさ?
「即戦力」
しか頭にないんだろうな。
外注も頭良くてね。業界つながりで他の会社の人達と話す事もそれなりにあるんだが、出来る会社、出来る人員(個人事業主も含む)は、口をそろえてこう言うんだ「悪いけど、君の会社の、特に君の部からの仕事は受けないようにしてるんだ」とね。表向きには言わないけど、複数の会社に相見積もりをとると、そう言っている会社は、弊社に出してくる見積書がめちゃくちゃ見積金額が高い。当然、弊社からはその会社に発注しないわけ。そう、残っているのは「実情を知らない会社とその社員」だけ。だから「動かないコンピュータ」が出来上がってくる。上の連中がどれだけ、この事を知っているのか。
の、割には「職人」に対する扱いがひどいのもある。
どうも、経営者、管理者どもは、自分の力で物理法則が変えられる、他人の脳をオーバークロック出来るかと勘違いしているようだが。どこかの国の政治家やDQN連中と同じように見える。
IT業界だけの話じゃ無いと思うんだけど、例えば……そうだなぁ、漫画・アニメ・小説とかのコンテンツ業界も(外から見てる限り)そんな感じを受ける。こっちの業界も、「即戦力」と「職人に対する扱い」に関しては、IT業界と同じに見える。
漫画・小説も、「既に売れている作品」に勝るとも劣らない作品をクリエイト出来る人間だけが採用されているような気がしてならない。いや、同人誌界を見てるとそう思うわけなんだが。
商品なんだから、それは当たり前の話なのも分かる。
だがよ。「育てる」事してないだろ?(という風に見える)
ある機会があって、就活生と話す事があった。やはりかなり焦っていて「もう仕事は何でもいいし、どこでもいいから内定とらないと」と言っていた。「うちの会社にだけは来るな」とだけ言って、俺は言わなかったけど、確かに「新卒」というカードを使えるのは1度きりだけど、「意に沿わない仕事、職場の雰囲気、自分の技術力、これらが合わないと、早々に精神を病むぞ」と言いたかった。現に、弊社やその周りの会社では早ければ入社後1週間、2~3年後までに辞めてしまう、またはメンタル疾患にかかる人が急増している。
なにしろ、育てないで、新人といえども「即戦力」を求めるからな。付いてこられない、精神的疲労は大変だろう。
今年の新人君と話をしてみたが、情報系の院卒のれっきとした修士でありながら、16進数とバイナリとテキストの区別が分からなかった、という驚愕の事実。これで「即戦力」?
「ゆとり」世代、の一言で方つけてしまうのは、少々酷かとは思うのだが、採用判定する方も「ゆとりジジィ」としか思えない。
まぁ、うちの部は、会社の中では「墓場」と言われていて、この部から出て行くには「自殺」「精神疾患による退職」の2択しかないのだが。
こうやって脱線した時の、リトライのすべが無いのも事実だよなぁ。
「そりゃ、実力が無いだけ」「努力が足りないだけ」
と一刀両断にするのは、いかがなものかと。まぁ、分からなくもないけどね。
前述のような事を書けば、ほとんどの人は
「辞めればいいじゃん」
と言う。まぁ、それも分かるわ。実際その通りだし。別に社畜じゃないし、会社に未練も無いから。少なくとも今の会社、出来れば「職人」を蔑ろにする風潮のIT業界からは離脱したい。
サービス業なんていけない。ぶっちゃけてしまえば、サービス業(例えば接客業等)って、いわゆる「感情職業」じゃないですか。一度鬱病やって休職した経験のある自分にとって、感情職業は無理。
転職エージェントとか見ていても、やはり「キャリア」。「即戦力」だよねぇ。
最近のmixiの(少なくとも自分にとっては改悪だった)状況に対する、mixi使っている人達の反応や、Twitterの非公式RTに関するページを読んでいて、「そんなに嫌なら、使わなきゃいいじゃん。自分に合ったものを自分で作れよ。」と思う。無料サービス・アプリなんだから文句たれてないで、使うの辞めればいいのに。
なんか、弊社のある課長を思い出したわ。ある有名なフリーソフトを使っていて「これ、使いにくいから、作者にクレームのメール入れるわ」とか……。おいおい。使いにくいなら使わなきゃいいだろう、フリーソフトなんだし。相手(課長)の常識より、自分の常識を疑ったわ。フリーとはいえ、クレームをつけるという常識が、昨今の風潮なのか、と。
と、思うのは、前述した「(会社を)辞めればいいじゃん」と同じなんだろうか?
少なくとも、金銭や契約が関わっている以上(他、労使契約、労働基準法等)、違うと思うんだよね。
と、書いても、例えば、喫煙者(愛煙家と言うか?)にたまにいる「金と税金払って吸ってるんだから、どこで吸おうと勝手だろ」というのと同じなんだろうか?
いったんレールから外れると、ほとんど復帰のすべが無いってのは、なんだかなー、と思う。
するとこう言う。
これも「(会社を)辞めればいいじゃん」「使わなきゃいいじゃん」と同じなのかな?
自殺する気は無いから、会社は辞めるけどね、耐えられなくなったら。自殺するくらいだったら、引きこもり→生活保護の方がいいわ。
1900年以来、第4位の大地震であれだけの災害だったにも関わらず、死者・行方不明者数が、スマトラ島沖地震、チリ地震よりも少なく、かつ、「年間の総自殺者数」の方が多いってのは、どうかと思うわけだが。
ちょっと、最近、閉塞感を感じるので、つらつらと書いてみただけ。
C#もVB.NETも使った事があるのに、恥ずかしながらdelegateというものが何だか良く判っていなかったので、ちょっと調べてみた。
http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_017/csharp_abc01.html
かなり適当な理解。
細かい突っ込みを入れてあげよう。
cから入ろうかと思っている。いろんな言語の根っこにあるという話を聞くし、俺が社会人になるころにも消えていないだろうし、cで苦労しておくと他の言語を覚えるとき楽だと聞いたので。
正直どうでもいいと思うよ。多分Cから入った人がそう思っているだけじゃないかって気がする。「根っこ」という意味でなら、学校での講義を真剣に受けておくようにしよう(どのくらいのレベルの学校か知らないが)。個人的にはCは学生のころ勉強はしたけど業務でなんて使ったこと無いよ。とはいっても、業務だと言語縛りなんてしてられないこともしばしばだから、そんなことにこだわってても仕方ない。
個人的にはやりたいことに直結している言語をとるべきだと思う。簡単なツールをとにかく早く、ならVB.NETとかでもいいでしょ。いわゆる個人Webサービスを展開したいのなら環境的にもPHPがいいとか、ちょっとGoogleで調べればわかると思う。結局、何であれやってみて結果が出ないと面白くないし、どんな経験でも無駄ではないはずだよ。(Cは結果が出るまでに時間が必要になるんじゃないかと思う)
まあ、安直なプログラマが増えて困るなんて向きもあるけど、C出身ならそうならないわけではないからね。単純に分野ごとの常識があるかないか。
結局モノが出てこないと面白くないよ。君が優等生になっても俺はぜんぜん面白く無いんだ。…という観点で書いてみました。
> 例えばDVDが普及した今、VHSの技術が専門の人なんて何の役にも立たないわけ。
> 今まで磁性テープを20年くらいやってきたオッサンに、
> いきなり光学の話フォローしろってのも酷な話。
研究者かなんか?それだったらVHSが廃れたからっていきなり首切られることはないよね。
自分の分野の話になって恐縮なんだけど、例えばTCP/IPについて
誰よりも深い見識があったとして、そんなことは何の金蔓にもならないの。
単なる技術オタク。ExcelやCOBOLやVBも同じ。今有効な技術はいずれ廃れる。
で、今までCOBOLしか出来なかった人がJavaが出来ませんって駄々こねて
ドロップアウトしたり、VB6がVB.NETになったぐらいで狼狽する人が世の中には
腐るほどいるんだけど、そんなの元から自分の分野に対する見識がなくて、
小手先のどうでもいいテクニックだけでその場その場を切り抜けてきたことの
ツケが回ってきただけで、本当にその分野を理解している人間なら、ある日を境に
自分の持ってる知識がゴミの塊になることなんてあり得ないんです。
少なくとも自分のまわりの優秀な技術者はみんな最新技術なんか難なく習得しているよ。
最新技術についてこれるから優秀、というわけでは断じてない。
これはたぶんインターネットやコンピュータのことも指していると思うんだけど、
ことプログラミングに関して言えば、半世紀前からこの分野は本質的には「全く」
進歩していないよ。確かにJavaとかRubyとかC#とか流行りの言語はどんどん
生まれてきているけど、これらは既存の概念をパズルのように組み合わせただけの
代物で、概念そのものはずっと昔からある。それらをマスターしていれば
技術の移行には半日で十分。それが出来ない人はまだまだ未熟だ。
とりあえず私の所感としては、スペシャリスト、ゼネラリストに関係なく
「同じ所にとどまろうと思うなら、全速力で走り続けなさい」