web-dev-qa-db-ja.com

ウェブ開発者と数学

私はHTML/CSSを習得したばかりで、読んだ内容をすべて理解して理解できるようにして、本当に楽しんでいます。私の目標は、フロントエンドとバックエンドの両方で最新のWeb開発者になることです。そのため、学習を止めることはありません。私は今JavaScriptにジャンプするつもりですが、私が知りたいのは、Web開発者になるための数学の重要性です。

  1. 数学を知る必要がありますか?
  2. もしそうなら、私はどのような数学を知って理解する必要がありますか?
11
Marc Way

私は貧しい数学者です-数値的手法( Computer Science 412 )は、私が何度か受けたクラスであり、積分計算問題を行うように求めないでください。それが終わったとき、私はそのような数学の問題に二度と触れないだろうと思いました。

数年後、私はRGBでアニメーション化された組みひもの画像をアバターとして作りたかったのです。

Animated braid in rgb

私がやった。 3つの正弦波を取得するための計算は簡単でした(高校の数学)が、あるスタンドが別のスタンドとオーバーラップするかという問題は、いくつかの考えを導き、小さな数値メソッド(私が採用したCS 412クラス-関数、非常に簡単...しかし、私はそれを認識して解決する必要がありました)。

その些細な例ですが、あなたが遭遇するかもしれません。難しい部分は数学ではなく、問題のクラスを認識することでした。

Programmers.SEからの最近の例: これはどのクラスの問題であり、それを解決するためにどの数学を知る必要があるか?

これをどのように計算しますか?高校で行列を解くことを思い出します。これは行列で実行できるものですか?この問題は何と呼ばれていますか?それを解決するには何を知る必要がありますか?

答えで指摘されているように、これは線形計画法です。繰り返しますが、それは問題を解決することではなく、問題のクラスを認識し、問題を解決する方法を見つけることができるようにすることです。

私の以前の就職先には、カーペットを最適にカットするためのコンピュータープログラムに取り組んでいる人がいました。 最適なカーペットの切断 は、これを行う方法を示しています。それにはいくつかの数学が含まれます(一言で言えば、私が理解できるよりも少し上です)。そして、はい、これはwebappのために行われていました(バックエンドからクライアントに送信する方法を理解するのはさらに楽しいです-それをjsonして再レンダリングしますか?どのように保存しますか?それとも、バックエンドで画像を生成するだけですか?).

An optimal carpet

私はPOSシステムに取り組んでおり、多くの場所で正しい数値形式を取得し、数千ドルの領収書で不足しているペニー(クーポン、プロモーション、パッケージなど)を追跡していました。このコードを追跡するには、いくつかの高度な代数と、特定の操作をさまざまな順序で実行することの影響を認識することが必要でした。 Math.pow(10,foo) / Math.pow(10,bar)からMath.pow(10,(foo - bar))などを特定して簡略化すると、一部のコードが少しクリーンに実行されます。

取り組まれていたもう1つの問題は、形状を変更せずに、署名のスプラインの複雑さを軽減することでした。 (次の画像は私が取り組んでいるものではありませんが、問題を説明するのに役立ちます)

enter image description here

これらのポイントのうち、削除できる最も重要でないポイントはどれですか(署名のポイント数に制限がある他の時代遅れのシステムに適合するため)?

これを続けると、特にフロントエンドのWeb担当者に当てはまる場合、Webアニメーションでスプラインを操作することがよくあります。 SVGアニメーションのw および inkscape wiki をご覧ください。 コード図 (この性質の「すごい」視覚化については circos で一目見たい)になりたくなるかもしれません。

そして最後に、バックエンドツールの担当者として、自分のツールに対してレポートを作成していることがよくありました。これはしばしば統計に影響を与えました(標準偏差、平均、中央値、モード、アウトライン、統計的有意性、最適線、データを提示するための適切なグラフの特定など)。

私が作ろうとしている点は、フロントエンドバックエンドの両方に、より高い数学を利用する多くの場所があるということです。あなたはこれを全く利用しないキャリアに自分自身を見つけるかもしれません。それはかなり可能です。ただし、いつかは高度な数学が必要になる可能性が高いでしょう。

プログラマーとして、あなたが手に入れて頭を回すことができるどんな数学も将来役立つでしょう。あなたがあなたのキャリアがあなたを連れて行く限界の簡単な数値的方法を見つけるのか、それともカーペットの最適な裁断を決定しようとしているのか、それが良くない理由をクライアントに説明しようとしているのか、私には言えません1つのWebページに7つのアイテムを配置するためのすべての可能な方法を表すアイデア。

21
user40980

Webページを開発するために、おそらく三角法以上を知る必要はありません。 最適になりたい場合は、次のことを知っておく必要があります。

セット理論:これは、プログラミングで数えることができるより多くのことに役立ちます。重複をより効率的に取り除く方法を学びます。

グラフ理論:ネットワークを基本的なレベルで理解したい場合、これは役立ちます。また、特定の種類の問題をより簡単に分析するのにも役立ちます。

線形代数:HTML5 Canvasのような3Dグラフィックスで何かをしたい場合、これは巨大です。

統計:ウェブサイトの機能を完全に最適化するために、ウェブ分析や機械学習などを理解できるようにする必要があるため、これはさらに大きくなります。

数学を理解することは、問題解決スキルを一般的に向上させるという見地からも役立ちます。難しい現実世界の問題と、既知の(簡単ではないことが多い)ソリューションを使用した数学モデルとの間の類似点を描くことができます。

19
World Engineer

CSSを使用して重要なレイアウトを行う場合、特にレスポンシブデザイン/フルイドグリッド/ベストプラクティス/ whiz-bang-powのルート全体を実行する場合は、多くの問題が発生します。番号。

たとえば、960pxの幅のページがあり、その上に5つのボックスを配置し、間に溝を挟んで側面と同じ高さにする必要があるとします。

Diagram showing 5 evenly spaced boxes in a 960px wide area

20px幅の樋を試してみて、数学がうまくいくことを願っています。これで、少し代数が残ります。

_5x + 4(20) = 960
_

したがって、Xを解くと、ボックスの幅はそれぞれ176pxになります。ただし、ピクセルがグリッドをカットしないように、応答性の高い流体グリッドを使用しています。パーセンテージとしてそれを必要とするので、反応式を引き出します( 本から ):

_(target/context)*100 = percentage
_

ちょっと待って!複数の行が必要になることがわかったため、_:first-child_または_:last-child_を使用して余分なマージンをキャンセルすることはできません。 nth-child(5n)(look!Math!)を使用することもできますが、レガシーブラウザのサポートが必要なので、960pxよりも20px広いコンテナにボックスをラップして、負の右マージンを与えます。

  • したがって、コンテナの幅は次のようになります:_(980px/960px)*100 = 102.083%_
  • コンテナの右マージンは次のとおりです:_(-20px/960px)*100 = 9.375%_
  • ボックスの幅は次のとおりです:_(176px/980px)*100 = 17.959%_
  • ボックスの右マージンは次のとおりです:_(20px/980px)*100 = 2.041%_

次に、各ボックスを6行のテキストと同じ高さにし、行の高さを1.5(_16px*1.5 = 24px_)に設定して、デフォルトのフォントサイズ16pxを使用しているとします。現在のフォントサイズの要素である垂直単位にemを使用する。

つまり、1つのボックスの高さは_(6*24px)/16px = 9em_です。

行間に20pxのマージンが必要な場合、ボックスには_20px/16px = 1.25em_の下マージンが必要です


そう、そうです、CSS、そしてしばしばJavaScriptを書くとき、私は数学が非常に重要だと思います。少なくとも、特定の代数、幾何学、または三角法が必要になる時期を知ることは、非常に便利です。

最新のプリプロセッサを使用しても、コンピューターは数値を処理することしかできないため、処理する数値を把握する必要があります。

5
Mike Gossmann

FWIWは、一般的な意味(つまり、言語に関係なくプログラミング)で、プログラミングの数学に関して最も価値のある証明は代数です。これは使用しません直接ですが、プログラマーとして成功するために必要な種類の論理プロセスについてトレーニングします。多くのプログラミングも数学指向ですが、代数は、遭遇する可能性のある問題を解決するための考え方を教えるのに最適です。

とは言っても、「プログラミング入門」コースを教えるとしたら、論理的なプロセス(Wordの問題、xの解決など)に重点を置いた代数の事前テストを行ってから、洗い流した人を強く提案しますそのテストでは、成功の可能性は低いため、別のクラスを見つけることについて非常に熱心に考えます。

そして、はい、これは意見ですが、私の個人的な経験のいくつかに基づく意見もです。

4
Glenn1234

私は6年以上の専門的な経験を持つWeb開発者です。主にサーバー側で行われますが、クライアント側の作業もかなり多くなります。

私が高校に通ったとき、学校は大学予備数学という問題のある数学プログラムを実施していました。私はプログラムに最初の3年間在籍していたのですが、昨年は標準的な事前計算クラスを受講し、Dを取得しました。

コンピュータとプログラミングに常に興味があったので、大学に行ってコンピュータサイエンスの学位を取得したいと考えていました。だから最初の年、標準レベルの数学のクラスを理解するのは難しいかもしれないと気づいたので、メジャーに数えられない計算前のクラスを再び取りました。それが問題になるとは限らない。またDをもらいました。落胆し、間に合うように卒業することができないのではないかと心配して、私は人生で最悪の選択の1つをし、英語のLit学位に切り替えました。

つまり、要するに、私はCSの学位も、大学レベルの数学の経験もありません。しかし、私はWeb開発者として大丈夫です。

この種の仕事では、高レベルの数学よりも、3つの特定の事柄を理解することが役立つと思います。ロジック、データベース、テキスト処理。もちろん、ロジックの理解は開発において普遍的であり、データベースは他の開発分野でも見られますが、テキスト処理に関する鋭い知識は少し異なります。たとえば、ゲーム開発者が正規表現を必要とすることはめったにないが、trig関数とcalc関数をほぼ毎日実装する必要があるのと同じように、優れたWeb開発者は、スリープ状態で正規表現パターンを記述する方法を知っている必要がありますが、ピタゴラスの定理を実装しない生涯。

そうは言っても、それに耐えることができて、機会があれば高レベルの数学を学ぶことができれば、害はありません。私が言ったように、私は大学でそれにこだわらなかったことを後悔しています。知るか;多分あなたはあなたがそのようなものを楽しむと決めるでしょう、そしてあなたはウェブ開発よりも、あなたはグラフィックス処理またはゲーム開発のための才能を持っています。

0