ここから本文です

プログラミングについて プログラミングなんてほとんど知らない素人です。

カズキさん

2019/9/1423:18:33

プログラミングについて

プログラミングなんてほとんど知らない素人です。

で、その素人が疑問に思ったのですが、どんなに腕利きのプログラマーがゲームやサイトを作ったとしても、その言語の開発者が設定したもの以上のものは作ることができないのでしょうか?

例えば、レスポンシブWebデザインってあるじゃないですか?これは今でこそ当たり前になっていますけど、それが可能になったのって言語の開発者がそう設定できるようにプログラムを組んだから、他の人がそれを実現できているわけですよね?

ということは、開発者がレスポンシブWebデザインを生み出す前は、どんなに腕利きのプログラマーでも、レスポンシブの表示を生み出すことは出来ないということなのでしょうか?

つまり、どんなに頑張っても

言語開発者>一般のプログラマー

ということになるのでしょうか?

補足<追記>

説明が足りませんでした。例えば、まだ言語がCしかない時代があり、かつレスポンシブという概念も誕生していないとします。その場合、Cの開発者がレスポンシブのプログラムを追加しない限り、他のプログラマーは少なくともC言語ではレスポンシブを利用できないということになるのでしょうか?(他のプログラマーが他の言語を開発し、かつレスポンシブも生み出す場合を除く)

閲覧数:
277
回答数:
7

違反報告

ベストアンサーに選ばれた回答

2019/9/1501:21:48

完全な想像ですが、レスポンシブやAjaxとか、HTMLをリアルタイムに処理させようとする仕組みは、HTMLの仕様を決めるW3Cでも、当初は想定していなかったんじゃないかな?

想定していないというか、技術的な問題で実用的ではなかったり、必要性を感じていなかった。

しかし、みながHTMLでサイトを作る上で、いくつかの不便さが生まれていったので、それを拾い上げた形で、技術的な進化があったのかと思います。
それは、プログラミング言語的な進化と、ハードのスペック的な進化です。

アホか、天才はそんな想定していたけど、使われなかっただけ・・・、と言われるかもしれないし、実は当初から、想定されていたというケースも多いのだが。

そのへんはわかりませんが、プログラミング言語といえど、ヴァージョンアップによって、変化や追加や廃止される仕様があるわけです。
プログラミング言語を作っている側が、気がつけなかった便利さを、ユーザーが発見するということは、あると思いますよ。

確か、Rubyの文字もオブジェクトであって、そのまま使うことを、想定していた。
しかし、オブジェクトなので、処理が若干遅い(そういうものと考えてくれ)ので、使う方は、定数だか(うろ覚え)にして、文字処理の高速化を、裏技的に使っていたのを、「そんな面倒なことをしているのか?なら、はなから高速に使えるようなオプションをつける。」と、仕様が加わった的なことを聞いたことがあります。


でだ、質問自体の意図を考えると、言語の仕様にない機能が、実現できるのか?という話だと思うのですが・・・、それは、通常実現はできると考えられます。


プログラミングの世界だと、根源的な状態は2進法という全体は、今も昔も変わっていません。
極論、2進数でなら、どんなプログラムも表現できます。

ああ、こうかけばわかりやすいですか?
蒸気機関車やエンジンやモーターは、人間がその仕組みを創造したものではありません。
すべてすでにある自然の中から、発見したものです。

すでにあった、自然の法則から、人間が利用しやすいように、組み直したものに過ぎません。

プログラミング言語も、そうで、2進数で表現できるプログラムなら、今も昔も、同じものを作ることは可能でした。
ただ、PCのスペックだったり、必要性やその利便性に気が付かれなかっただけです。

それが、言語の仕様としてあるのか?
それとも、個人が全部作らなければ行けなかったのか?

の違いは、あれど、概念的な話なら、今あるプログラムも、50年前のパソコンで、あくまで概念的になら、作ることは可能です。

まぁ、50年も前だと、メモリが数KBとかの単位だと思うので、スペック的に無理なことも多いでしょうが、そういうハード的な制約を除けば、同じか同様の結果を出すものを、作ることは可能でしょう。


現実でも、「蒸気機関という仕様が追加されました!」となっているわけではなく、「蒸気によって圧力を高めて、物を動かすことができる」という自然の法則がすでにあり、それを利用したように、プログラミングの世界でも、2進数という根源的な法則は変わっていないので、言語の仕様が追加されようが、されまいが、仕様を追加される前にも、同様の機能をさせることは、不可能ではなかった・・・、ということになります。

ただし、その困難度はケースによるということでしょう。

こういう仕様に縛られずに、実現させることを、本来ハッキングっていうんですけどね。

質問した人からのコメント

2019/9/15 20:48:39

皆さまご回答ありがとうございました。

ベストアンサー以外の回答

1〜5件/6件中

並び替え:回答日時の
新しい順
|古い順

chi********さん

2019/9/1515:29:53

ハードウエアの性能以上のプログラムは作れない。
言語の開発者が設定してくれた機能しか使えないのは「腕利きのプログラマー」とは言えない。

「腕利きのプログラマー」とは高級言語で実現できないことをアセンブラで書くか、自分で言語を開発できるプログラマーである。必要ならばOSでもハードウエアでも開発できるのが「腕利き」です。

oto********さん

編集あり2019/9/1512:57:18

言いたいことはわかるけど、ちょっと違うかな。

カンナを作る人が大工より上なわけではないでしょう?フォントを作る人がデザイナーより上というわけではない。

仕組みを作る人と、その仕組みを使って特定の物事を解決する人、そもそも与えられている課題の種類が違いますね。

ざっくり言えば、仕組みを作る側は汎用性が大切になりますし、

それを使って個別案件を解決する側は案件にマッチさせる力が大切になってきます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

n2q********さん

2019/9/1508:23:57

【どんなに腕利きのプログラマーがゲームやサイトを作ったとしても、その言語の開発者が設定したもの以上のものは作ることができないのでしょうか?】


《ゲーム》

ゲーム機やパソコン等のハードウェア上の制約があれば、それ以上のことは出来ません。でもそれは言語のせいではないわけです。

言語のせいで何かが出来ないということはあり得ます。でも、それは個別の言語に関する問題と捉えるべきです。

プログラムが作りやすくなるように工夫された言語の場合、そのシワ寄せがくる形で、「その言語の開発者が設定したもの以上のものは作ることができない」ということはあり得ます。でも、それは言語が悪いのですよ。悪い、という言い方は適切でないかもしれませんが、でも、他のちゃんとした言語(プログラムを作るのは大変になりますが)を使えば何でも出来るわけ。



《サイト》

システム上の制約で、あれも出来ないこれも出来ないということが、そもそもある。言語とかの話ではないわけです。

Web サイトのサーバー側とクライアント側(ブラウザのことです)を根っこの部分から作ったら何でもありとなります。

けど、それは無理ですよね。無理というか著しく困難。



【例えば、レスポンシブWebデザインってあるじゃないですか?これは今でこそ当たり前になっていますけど、それが可能になったのって言語の開発者がそう設定できるようにプログラムを組んだから、他の人がそれを実現できているわけですよね?】

Web 業界のことは分かりません。でもこれ、言語やプログラムの話とは関係ないのでは。または、何らかの関係があるのかもしれませんが。



【例えば、まだ言語がCしかない時代があり、かつレスポンシブという概念も誕生していないとします。その場合、Cの開発者がレスポンシブのプログラムを追加しない限り、他のプログラマーは少なくともC言語ではレスポンシブを利用できないということになるのでしょうか?】

「まだ言語がCしかない」

その想定だとプラグインですかね。


「Cの開発者がレスポンシブのプログラムを追加しない限り」

じゃないです。誰かがプラグインを作れば良いだけです。言語には無関係ですね。

プロフィール画像

カテゴリマスター

kin********さん

2019/9/1506:48:33

レスポンシブというとWebブラウザ上の機能ですが、Webブラウザ上でできることは元々かなり制限されていますので、設計意図を超えることはできないようになっています。例えば勝手にローカルファイルを読み書きできませんし、画面の表示サイズ(ビューポート)をブラウザからリアルタイムで伝達してもらえるからこそレスポンシブの機能が成立します。それらはC言語の設計者ではなくブラウザの設計やWeb標準を考える人達が設計・設定・想定しています。

C言語となるとブラウザそのもの、OSそのものとか、コンピュータでできることは全て対象にできますので、そのコンピュータができることは全てできます。

例えばですが、普通のパソコンは脚がついていないので二足歩行はできません(笑)が、3DCGは「立体形状を細かい三角形で近似表現する」のと「計算による透視図法の描画」という手法を基礎として画面上に表示できるので、C言語の開発者は全く専門外だったと思いますが、実装可能です。

プロフィール画像

カテゴリマスター

あみやさん

2019/9/1500:35:10

プログラミング言語というのは、その名の通り言語です。
言語の設計者が作るのは、文法と単語です。
プログラマーはその文法と単語を使って物語を作ります。
「言葉」と「物語」はレイヤーが違うので、限界も全く別の問題になります。

たとえば、「雨」という言葉が無かったとして、
別の言葉を組み合わせて「空から降る水」という形での表現は可能なのです。

実際、プログラミング言語と言うものは、分かりやすい機能と言うのはほとんどありません。
その大半は、
数値をどう記録するか、
数値をどう計算するか、
処理の流れをどう制御するか
という集まりです。
そういうとても単純な物を物凄く大量に積み上げてプログラムは作られます。
プログラミングは、ほんの僅かしか無い単語を集めて複雑な物語を描くみたいな作業なのです。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる