- PR -

たくさんの言語があふれていますが…

投稿者投稿内容
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-10-19 09:15
引用:

きくちゃんさんの書き込み (2006-10-18 22:43) より:
そうそう、Jitta さんが良く、VB は「プロフェッショナル」向けの製品である、という話を紹介しておられますが、実際のところ、製品としての位置づけとは別に、「デベロッパー」が VB を使うべきでない(説得力のある)理由って、どういうものがあるんでしょう?
例えばインクリメント/デクリメント演算子やシフト演算子が使えなかったりして、低レベル処理をゴリゴリやるのは苦手かなぁ、とは思いますけど…。



元記事を読まないと用語を誤解しそうですね。
「プロフェッショナル」:医師、弁護士、建築士など
「デベロッパー」:システム開発者

旧VBに関して言えば、大規模システムの開発には向かないと思いますね。
オブジェクト指向抜きで大規模なのをやるのはツライ。
あとは旧VBは例外処理もきつかった気がします。
(最近いじっていないのでうろ覚えなのです…)

ただし、手軽にGUIを作成するという話であればいまだVBは最強なのかな、
とも思っていますね。敷居の低さがVBの魅力ではないでしょうか。

そしてこのメリット(手軽にGUI)はプロフェッショナルの立場では
大きく評価され、デメリット(大規模や例外処理に弱い)は
あまり気にされないのでしょう。

デベロッパーの立場では手軽さよりも堅牢さといったところが重視されますから
「手軽である」ことのアドバンテージが
(EoZであることはよいことなのですが)そこまで大きくない。
そしてデメリットが非常に大きくうつるのでしょうね。

新VBになってからは、デベロッパーでも使えるようになったな、と思いました。

# 本業はJavaなので無知ゆえに外している点があればご指摘ください
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-10-19 09:44
引用:

nagiseさんの書き込み (2006-10-19 09:15) より:

旧VBに関して言えば、大規模システムの開発には向かないと思いますね。
オブジェクト指向抜きで大規模なのをやるのはツライ。


旧 VB でも、「オブジェクト指向」 ありきで開発はできますよ。
一応、インスタンスという概念もありますし、Implements キーワードもあります。(完全に手動ですけどw)

こういう時に 「継承がないから...」 などと言われるのですが、
「継承」 は、それほど重要ではないと思います。(武器にはなりますが)
重要なのは、Multiple Instance であって、Inheritance ではないです。

# VB に関して言えば、継承よりか、明示的な 「継承階層」 の方が欲しいです...

むしろ、
  1. 参照のない型指定の配列が作れない
  2. クラス モジュールでの定義に制限がありすぎる (自由にカプセル化できない)
  3. 列挙型の型名が省略できてしまえる (コーディング規約でしか制限できない)
  4. 暗黙の型変換ができてしまえる (制限するオプションがない)
  5. 既定のインスタンスが勝手にできる (制限するオプションがない (復活した VB8 にもない))
などなど、OOP 以外の要素で貧弱というイメージです。
(まあ、3 ~ 5 は、カバーできるのでまだ良いのですが)

引用:

あとは旧VBは例外処理もきつかった気がします。


そうですね、On Error ~ は、構造化を強制できないので使い難いです。
例外処理というよりは、エラー処理 (エラーロジック) といった感じです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2006-10-19 21:11
ognacさん、こんばんは。

引用:

【やっぱり VB ユーザーというのはスキルレベルが低いのだなぁ、気の毒だなぁ】この意識はどこからくるのでしょう。


あ、私がそう思ったというわけではありません(主語がありませんでしたね…)。
#ちなみに私は普段、殆ど VB(主に2005)しか使いません。

件の、 MS のエライ人の発言部分が「C#、ASP.NET などの開発者はスキルレベルが高いが、VB の人はそうではない」と言っているように読めるので、そのように受け止めてしまう人も多いのでは無かろうかと、ま、そう思ったわけです。
でも、よく考えたら「.NET開発者への道」なので、ひょっとしてこれ、以前の VB(6以前)を使い続けている開発者に対して「スキルアップ」しようよ、という意味で言っているんでしょうか…?
だとしたらなんか、誤解させる書き方だなぁ。

しかし、「糞」だとか「頭の悪い人向け」だとか言われているのも、「開発者は使うべきでない」とか言われているのも、以前の VB 限定ではなく、現在の VB(2002以降)も対象に含まれているようですので、じゃあ、その根拠は何なんだろうか、と疑問に思ったわけです。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-10-19 21:56
引用:

じゃんぬねっとさんの書き込み (2006-10-19 09:44) より:
旧 VB でも、「オブジェクト指向」 ありきで開発はできますよ。
一応、インスタンスという概念もありますし、Implements キーワードもあります。(完全に手動ですけどw)

こういう時に 「継承がないから...」 などと言われるのですが、
「継承」 は、それほど重要ではないと思います。(武器にはなりますが)
重要なのは、Multiple Instance であって、Inheritance ではないです。

# VB に関して言えば、継承よりか、明示的な 「継承階層」 の方が欲しいです...



interfaceのimplementsが問題なく出来るのであればデメリットが薄れますね。
実装の継承ができないとなるとTemplateMethodパターンは使えなさそうですが…。

どこかに新旧VB向けのデザインパターン講座みたいなページないかなぁ。
と思って探したら講座ではないですがML総括のページがひっかかりました。
http://www.ogis-ri.co.jp/otc/hiroba/MailingList/digest/mail200002.html
しかし、読んでみると厳しそうに思えますね。

引用:

むしろ、
  1. 参照のない型指定の配列が作れない
  2. クラス モジュールでの定義に制限がありすぎる (自由にカプセル化できない)
  3. 列挙型の型名が省略できてしまえる (コーディング規約でしか制限できない)
  4. 暗黙の型変換ができてしまえる (制限するオプションがない)
  5. 既定のインスタンスが勝手にできる (制限するオプションがない (復活した VB8 にもない))
などなど、OOP 以外の要素で貧弱というイメージです。
(まあ、3 ~ 5 は、カバーできるのでまだ良いのですが)



なるほどなるほど。非常に参考になります。

型に関してはオプションでチェックを厳しくできるのでしたっけ?
入門用としては「まず触れてみる」の敷居の低さはメリットですが
デベロッパー用となると「危なげな場所の早期発見」が重視されるので
このあたりのスイッチが充実するとよいのですけどね。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-10-19 22:05
引用:

きくちゃんさんの書き込み(2006-10-18 22:43)より:
そうそう、Jitta さんが良く、VB は「プロフェッショナル」向けの製品である、という話を紹介しておられますが、実際のところ、製品としての位置づけとは別に、「デベロッパー」が VB を使うべきでない(説得力のある)理由って、どういうものがあるんでしょう?


 説得力の有無は置いておくとして、私がそう考える理由について、明確にします。

 私が一番に思うのは、
「プログラムとはなんぞや?を知らなくても、それなりのモノが作れてしまえる」
というところです。

 元々、プログラム初心者の教育用として設計された言語ですから、「プログラムとはなんぞや?」を学ぶためのモノのはずなのに、(これは IDE のせいではありますが)部品をポトリペタリすると、それなりのモノが出来てしまいます。
 また、型を意識しなくてもいい、というところも、よくないと考えます。
わんくま掲示板のほうで、"06_10_01" と、"06___10_01" を比較している例を見ました("_" はスペース)。
文字列は年月日を表しているのですが、「年月日」と人間が認識できるのは、そういうアバウトさが人間にあるためです。しかし、プログラムにはありません。空白がありますから、数価とも認識されず、文字列として比較されます。
当然、同じではありません。
これを、「なぜ?」と質問するのは、VB 使いならでは、ではないでしょうか。
(スクリプト使いの一部も、かな?)

 構造化とかオブジェクト指向とか、それはそれでいろいろあるんだけど、、、はぁ。。。

_________________
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-19 22:11
引用:

じゃんぬねっとさんの書き込み (2006-10-19 09:05) より:
引用:

ちゃっぴさんの書き込み (2006-10-19 00:08) より:

引用:

一郎さんの書き込み (2006-10-11 11:52) より:

引用:

じゃんぬねっとさんの書き込み (2006-10-11 10:58) より:
普通にできると思いますけど...


あれーっ、昔実際にコードを書いてみてできなかった記憶があるんだけどな・・・
昔の.NET Frameworkだとできないとかありませんか?


VB 6.0 以前だと error になります。
ただし、VBScript だと OK だったりします。


話の流れ (C# との比較) からして、VB7.0 以降の話として書いております。

配列の確保という意味では、VB6 以前だと、SafeArrayAllocDescriptor 関数あたりなりを使うなどする必要がありますね。



すみません。言葉足らずだったようで。
本題は、一郎さんが VB 6.0 と混同しているのでは?
という指摘です。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-10-19 22:40
引用:

nagiseさんの書き込み (2006-10-19 21:56) より:

どこかに新旧VB向けのデザインパターン講座みたいなページないかなぁ。
と思って探したら講座ではないですがML総括のページがひっかかりました。
しかし、読んでみると厳しそうに思えますね。


まあ、オブジェクト指向を前面に推している言語と比べちゃうと目劣りするでしょうね。

引用:

型に関してはオプションでチェックを厳しくできるのでしたっけ?


VB6 以前はできないです。(慣れれば、ミスなんてなくなりますが)

引用:

入門用としては「まず触れてみる」の敷居の低さはメリットですが
デベロッパー用となると「危なげな場所の早期発見」が重視されるので
このあたりのスイッチが充実するとよいのですけどね。


VB7 からは、Option Strict オプションがあります。
VB8 は既定のインスタンスが復活しているので、制御するオプションが欲しいところですね。

引用:

ちゃっぴさんの書き込み (2006-10-19 22:11) より:

すみません。言葉足らずだったようで。
本題は、一郎さんが VB 6.0 と混同しているのでは?
という指摘です。


おk、了解しました。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2006-10-19 22:42
Jittaさん、こんばんは。

引用:

部品をポトリペタリすると、それなりのモノが出来てしまいます。


ま、その辺は最近、何でも一緒のような気が…。

引用:

これを、「なぜ?」と質問するのは、VB 使いならでは、ではないでしょうか。


うーん、つまり易しいが故に、逆に理解するに至るまでが遠回りになってしまうから、デベロッパーを目指す若人は使うべきでない、という事でしょうか。

スキルアップ/キャリアアップ(JOB@IT)