問題タブ [innovation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
backwards-compatibility - 後方互換性と革新という相反するニーズのバランスをどのように取っていますか?
私は、GUI (グラフィカル) と API (スクリプト) インターフェースの両方を持つアプリケーションに取り組んでいます。当社の製品には非常に大きなインストール ベースがあります。多くのお客様が、当社の製品を使用するスクリプトの作成に多くの時間と労力を費やしてきました。
すべての設計と実装において、(当然のことながら) 100% の後方互換性を維持するという非常に厳しい要件があります。以前に実行されたスクリプトは、新しいソフトウェア バージョンが導入されたときに、変更を加えずにまったく同じ方法で実行し続ける必要があります。
残念なことに、この要件は私たちの手を後ろに縛り付けることがあります。なぜなら、私たちのイノベーション能力や物事を行う新しいより良い方法を考え出す能力が実際に制限されるからです。
たとえば、すでに可能になっているタスクを達成するためのより良い (そしてより使いやすい) 方法を思い付くかもしれません。このより良い方法をデフォルトの方法にすることが望ましいですが、下位互換性に影響する可能性があるため、これを行うことはできません。そのため、ユーザーが利用可能になる前にユーザーが「オン」にする必要があるという新しい (より良い) 方法をモードとして残すことに固執しています。ドキュメンテーションやオンライン ヘルプを読まない限り (多くの顧客は読まない)、この新しい機能は永久に隠されたままである。
Windows Vista が最初に登場したとき、多くの人が Windows Vista で動作しなかったすべてのソフトウェアと周辺機器に悩まされたことを私は知っています。そのせいでかなり評判が悪かったです。しかし、Microsoft は、多くのユーザーの下位互換性を犠牲にして、Vista でいくつかの大きな革新を行うことに成功したこともわかります。彼らは危険を冒しました。それは報われましたか?彼らは正しい決断をしましたか?時間が経てば分かると思います。
イノベーションと下位互換性という相反するニーズのバランスをとっていますか? ジャグリング行為をどのように処理しますか?
sql - 過去 10 年間にどのようなリレーショナル データベースのイノベーションがあったか
リレーショナル データベースの SQL 実装は、現在の形で約 25 年間 (System R と Ingres 以来) 存在しています。主な (緩く準拠している) 標準でさえ ANSI-92 (後で更新されましたが) は 15 年前のものです。
過去 10 年ほどの間に SQL ベースのデータベースでどのような革新があったと思いますか? 特に、OLAP、Columnar、およびその他の非リレーショナル (または少なくとも非 SQL) の革新を除外しています。「アプリケーション サーバー」タイプの機能とバンドル (レポート ツールなど) も除外したい
基本的なアプローチはかなり静的なままですが、次のように考えることができます。
- 可用性
- より大きなデータ セットを処理する機能
- メンテナンスと構成の容易さ
- より高度なデータ型 (blob、xml、unicode など) のサポート
他に考えられるものはありますか?
history - アラン・ケイの言葉を思い出す
数年前、Alan Kay は、過去 20 年間 (実質的には PC の寿命) でソフトウェアに新しいものが 3 つしかないという趣旨で引用されました。それらの 1 つがスプレッドシートでした。
他の2つを覚えている人はいますか?
アラン・ケイとは?(何人かは尋ねるかもしれません。) Xerox Parc での彼の仕事は、他のどの影響よりも、現在のソフトウェア パラダイムを形成する上で大きな役割を果たしたと言えます。
innovation - 1980 年以降のコンピューティングにおける重要な新しい発明
この質問は、過去 50 年ほどにわたるコンピューティングのさまざまな種類の進歩についてのコメントから生じました。
他の参加者の何人かから、フォーラム全体への質問として提起するよう求められました。
ここでの基本的な考え方は、現状を打ちのめすことではなく、基本的な新しいアイデアや原則を思いつく過程について何かを理解しようとすることです。
私は、コンピューティングのほとんどの分野で本当に新しいアイデアが必要であると主張しており、最近行われた重要で強力なアイデアについて知りたい. 本当に見つからない場合は、「なぜ?」と尋ねる必要があります。と「私たちは何をすべきですか?」
java - Java++ は必要ですか?
いくつかの点で、Java は C がしばらく前にあった場所にあるように思えます。どちらも当時としてはかなり最小限の言語であり、比較的クリーンでシンプルなコアを構築することができます。(ここでは、ライブラリではなく、コア言語について言及しています。) どちらも非常に人気があります。どちらも共通語であり、レガシー コードが大量に含まれています。どちらも、他の言語のプログラマーが見逃しがちないくつかの最新の生産性機能を欠いています/欠いていました。どちらも非常に慣性に支配されており、変化する世界への適応が遅いようです。
C++ が C にあるように、Java のおおよそのスーパーセットである Java++ を作成することは合理的であるように私には思えます。絶対に必要な場合にのみマイナーな方法を使用し、プレーンな古い Java には欠けている多くの最新の機能を追加し、後で標準化について心配します。良いアイデアと思われる機能は次のとおりです。
- ファースト クラスの関数、デリゲート。
- 閉鎖。
var
C# やauto
Dと同様の静的型推論。- 演算子のオーバーロード。
- C# や D などのクラスとは異なる値型としての構造体。
- プロパティ。
- チェック例外を無視するオプション。
- ファイルで複数の最上位パブリック クラスを宣言する機能。
- 追加などを可能にする、より強力な組み込み配列。
- より良いジェネリック/実際のテンプレート。
- C# 4.0 の dynamic キーワードのようなもので、一般的に静的な言語で必要に応じてダック タイピングを行うことができます。
- Java は主に VM 言語であるため、特定の目的のためにオンザフライでコードを生成するなどのハードコアなメタプログラミング機能が含まれている可能性があります。
そのような言語の需要があると思いますか? そんなことが成功すると思いますか?
編集:ランタイム/バイトコード レベルでの互換性について話しているのではなく、ソースレベルでの Java との互換性について話しているのです。また、はい、Java 7 はこれらのいくつかを追加できますが、Java に機能を追加するための「公式」プロセスは非常に保守的であるようです。本当のポイントは、安定性/標準化よりも革新に重点が置かれている場合に、Java をブランチにフォークするというアイデアです。
innovation - (技術)「イノベーション」に対する御社のスタンスは?
.NET 3.5、.NET 4.0、WPF、Silverlight、ASP.NET MVC - 実際に多くの新しい Microsoft テクノロジがリリースされており、最近は試してみることができます。(私が挙げた例はすべて Microsoft テクノロジですが、これはどの言語やプラットフォームにも当てはまります)。これがあなたの勤める会社でどのように扱われているか興味があります。いくつかの例:
- 会社が使用するテクノロジーを決定する CTO はいますか?
- 開発チームは、使用するテクノロジを自由に選択できますか? 例: フレームワークのバージョン、従来の ASP.NET と ASP.NET MVC、ADO.NET Entity Framework と Linq2Sql または NHibernate? それともこれらの混合?
- あなたが働いている会社はどのような新しい技術を試していますか?その理由は何ですか?
- あなたの会社には、WPF やその他のテクノロジを研究目的で試すための専用リソース (時間) がありますか? それとも、空き時間に何かを試して、それらを会社に紹介しようとしますか?
これらは、私の質問を明確にするための単なる例です。要約すると、このプロセスがどのようなものか、誰が責任を負い、誰が決定を下すのかを知りたいです。あなたの会社は時流に乗りますか、それとも新しいテクノロジーを試すことに消極的ですか? そして、あなたはこの状況に満足していますか?
私が働いている会社では、まだ .NET 2.0 を使用していますが (現在はゆっくりと .NET 3.5 に切り替えています)、ASP.NET MVC を真剣に調べていない、WPF をまったく試していない、などです。そして、人々にそうするよう説得するのがかなり難しいと感じる人もいます. そうでないことを期待するのは公平ですか?
innovation - 組織内のイノベーションをどのように推進していますか?
イノベーションは、最近流行りの言葉のようです。各組織はこれを非常に強調していると同時に、最も悪口を言う言葉にもなりつつあります。すべての新しいものはイノベーションではありません。私の組織でも、イノベーション文化を促進するための動きがあり、私がそれに関与するようになりました。
革新的な文化を促進する方法を知りたいです。人々がそのように考えるように駆り立てるいくつかの検証済みの方法はありますか. どうすれば人々をやる気にさせ、方向性を与え、想像力を広げて新しいアイデアを思いつくことができるかを教えてくれる答えを探しています.
user-interface - 構造化された階層データのバージョン管理を表示するための効果的なUIを作成するもの
従来のバージョン管理システムでは、左側に[プロジェクト]->[フォルダ]->[ファイル]、右側に[詳細]ビューをグループ化してバージョン管理情報を表示します。次に、各項目をクリックして、その構成履歴の改訂履歴を確認します。
オブジェクト指向モデルの観点からプロジェクトで利用可能なすべての履歴バージョン情報(たとえば、クラス->メソッド->パラメーターなど)があると仮定すると、UIでそのような情報を表示するための最も効果的な方法は何だと思いますか?プロジェクトのスナップショットビューと履歴バージョン情報に簡単に移動してアクセスできますか?現在SVN、SS、Perforce、または任意のVCSシステムを使用しているように、このようなツールを日常業務で使用している立場に身を置いてください。これにより、ツールの使いやすさ、生産性、および有効性が向上します。
私は個人的に、上記のようなフォルダやファイルを表示するための古典的な方法は非常に制限的であり、深くネストされた論理モデルを表示するにはあまり効果的ではないと思います。これがグリーンフィールドプロジェクトであり、特定のテクノロジーによって制限されていないと仮定すると、これにどのようにアプローチするのが最善だと思いますか?
私は自分の研究プロジェクトに価値を加えるためのアイデアとインプットをここで探しています。価値があると思われる提案があれば、遠慮なく行ってください。考えを共有してくれた人にもう一度感謝します。
編集:より多くの情報、平均的な構成アイテムを提供するために、メソッドを取得すると、約6つのレベル(プロジェクト->アセンブリ->モジュール->名前空間->タイプ->メソッド、およびその中の子アイテムに移動するためのより多くのレベル)にネストされます)そしてこれは一貫して当てはまります。あるプロジェクトで時々深いネストされた構造を持つフォルダファイル構造の場合とは異なります。レベルが非常に多い場合、ツリーペインはナビゲートできなくなります。IMHO、ツリーペインも、このシナリオではシステムの全体的な構造を表示するのにあまり効果的ではありません。