質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

FPGA

FPGAは、製造後でも設計者によって書き換えができる論理回路です。即時に書き換えが可能なため、開発期間を短縮することが可能。何度でも書き換えられるといった柔軟性があるため、製造や開発における費用も削減できるといったメリットがあります。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

8回答

545閲覧

どうしたらよいかわからずに途方に暮れています。

carnage0216

総合スコア194

アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

FPGA

FPGAは、製造後でも設計者によって書き換えができる論理回路です。即時に書き換えが可能なため、開発期間を短縮することが可能。何度でも書き換えられるといった柔軟性があるため、製造や開発における費用も削減できるといったメリットがあります。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1グッド

4クリップ

投稿2018/04/18 10:03

編集2018/04/23 15:51

プログラマの皆様にご相談したいことがあります。
この場をお借りして書かせて頂きます。
最初はpcのデータシートから
カメラの映像のメモリに働けるC言語プログラムを書きたいと考えていました。
問題はosが絡んでくるためデータシートを見るだけでは意味がないという事です。
opencvの関数を調べて標準ライブラリ関数にしていますが、なんだか答え合わせをしているだけでつまらないと思ってしまうことが多く憂鬱です。
一から、せめて標準ライブラリ関数からpcのカメラにアクセスしたり、カメラの映像と保存した画像を比較して検出したりしたいのですが、自頭が悪いため何も出来ません。
私は自分で自作できないものを使うのを嫌います。過去の質問でもcmakeやvsを使いたがらなかったのは一生かけても自作出来ないと思った為です。
大変くだらない理由ですが。
プログラミングは大好きですが、なんだかモチベーションが下がるばかりで悲しくなります。
所詮、自分は誰かの作ったツールを使うことでしか、作りたいものを作れないと思うと虚しくなります。
ツールを使いこなせていませんが。
opencvを使うにしても、一からLinuxなどのosを考慮した画像処理のプログラムを作ってみたかったです。何を参考にしてよいかはわかりません。
できもしない事を考える毎日がとてもしんどいです。
ここは質問するサイトなので低評価がつくのは仕方ありません。
今も標準ライブラリ関数の使い方を勉強していますが、何か違うのではないかと思ってしまいます。
エンジニアの方がどうやってopencvのような画像処理ツールを一から作ったのか興味があります。
osを考慮しながらハードウェアのデータシートやアセンブリ命令から画像処理特有の関数を作っていきopencvができたのかななんて事を考えています。エンジニアはどうやって普段から無いものを元からあるアセンブリ命令や標準ライブラリ関数で作ったのかわたしには見当もつきません。それ故に誰かが作ったものや、ここで皆様の力を頼りにしてばかりいます。
数年前はfpgaで画像処理やカメラアクセスなども自作しようと考えたのですが、金銭的な問題や技術的に限界があったため断念しました。
やりたいことはたくさん出てくるのに何から始めればよいかわからず困り果てています。

<編集4/24>
あの解答していただいたエンジニアの皆様は学生時代はどのように送られていたのでしょうか?
学生時代で学んでいた時期と会社に就職した後で学んだこと、どちらが勉強になることが多いでしょうか?
また、自分で解決できないときは上司の方に相談できたのでしょうか?
私個人として大学には行っていませんが、大学生活で学べることは時間的な意味で短いと思います。そのため学べることに限界があると思います。
なので就職した後のほうが勉強なることが多かったり、大学や専門学校で学んでいた時よりも勉強になることやスキルアップにつながることが多いのではないかと思い質問しました。
また、会社の仕事とは別に個人で作りたいものがある際に壁にぶち当たった時、会社の人間や同僚にアドバイスなどを問うことはあるのでしょうか?あるいはそのような経験はありますか?

どうかよろしくお願いいたします。

yohhoy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hmmm

2018/04/18 10:14

> ここは質問するサイトなので低評価がつくのは仕方ありません。 分かっているなら課題・質問を書いて下さい。
carnage0216

2018/04/18 11:03

質問ではなくて申し訳ありません。
YomogiKOBO

2018/04/23 19:56 編集

”<編集4/24>”追記に関して、様々な質問、意見を求められておられますが、ざっくりな内容(個人情報保護の観点から)で体験談ぽい話になることだけお気を付けください。
YomogiKOBO

2018/04/24 06:53

既にベストアンサーもついていますので別トピックとして提起されてはいかがでしょうか。新規トピックとするのであれば本質問のURLもつけておくとよいかもしれません。
carnage0216

2018/04/24 09:44

そうさせていただきます。どうもありがとうございました。では、新しい質問を立ち上げさせていただきます。
guest

回答8

0

今も標準ライブラリ関数の使い方を勉強していますが、何か違うのではないかと思ってしまいます。

結局アセンブラで書こうとも、CPUやその上の命令体系は「他人が作ったもの」ですよね?料理なら「種を植えることからはじめる」こともできなくないかも知れませんが、コンピューターについては個人レベルで同等のものを作るのは技術的・資金的にハードルが高すぎます

以前にも書いた言葉ですが、下のレイヤでなく、さらに上を見てください。既製品のレゴブロックを組み合わせることで素晴らしい作品を組み上げるクリエーターのように、ライブラリで提供される関数などを部品として、さらに大きなものを組み立てていくのも、間違いなくプログラミングです。

やりたいことはたくさん出てくるのに何から始めればよいかわからず困り果てています。

思い込みをかなぐり捨てて、使えるものは何でも使ってまずは形にしてみることからはじめましょう。座学だけで車の運転ができるようにならないのと同様、実際にやってみなければプログラミングはほぼ身につきません

投稿2018/04/18 10:28

編集2018/04/18 10:41
maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

漠然とした話になりますが。

私は自分で自作できないものを使うのを嫌います。過去の質問でもcmakeやvsを使いたがらなかったのは一生かけても自作出来ないと思った為です。

ここに答えがあるんではないかと思います。

要点は3点。

  • 先人への敬意を忘れない
  • 目標設定を適切にしましょう
  • プログラミングを楽しんでください

人間一人の力は限られています。何事をなすにも先人の英知の積み重ねのもと、新たな何かが生み出されています。
Windowsしかり、OpenCVしかり、なにがしかのプログラミング言語しかり。
それはプログラミングに限った話ではなくて、でっかい話文明そのものにも同じことが言えます。
僕なんかガスコンロ無しに火を起こすこともできない。
なので、まずは自分自身にできることの小ささと、先人への敬意を忘れないようにしましょう、というのが一点目。

仕事をする上でも、何かのスポーツをやるのでも、目標設定は大事だと思います。「海賊王に俺はなる!」と言える人間は現実にはいません。明日からメジャーリーグに行ってイチロー並の活躍をすることもできません。
carnage0216さんの目標は、はたから見ていて幾分高めだなぁと思います。それはとても苦しいことだと思います。あれもできない、これもできないでは、気が滅入るのも当然です。

ではどうしたらいいかと言えば、できることから始めるしかありません。
まずはHello Worldから。次にちょっとだけ複雑な何かをつくる。その次はさらにもう少しだけハードルを上げる。
そうやって少しずつできることが広がるのは、本当に楽しいものです。それがプログラミングという知的好奇心を満たす行為です。

僕は仕事を通して約16年ほどの時間を楽しんだり苦しんだりして、teratailで回答側に回れる程度には経験を積んできました。
16年でもこの程度の凡人ですが、好き好んでプログラミングで生計を立てています。
carnage0216さんはどれだけの時間を費やしましたでしょうか。teratailで質問し始めた程度の時間なら、まだまだプログラミングの深淵を垣間見えるには早い。
心持ちとやり方を少しだけ軌道修正して、もう少しだけがんばってみてはいかがでしょうか。

以上、ポエムでした。減点上等。

投稿2018/04/18 11:11

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/04/18 11:33

本当にどうもありがとうございました。 >>先人への敬意を忘れない この言葉に何か救われた気がします。 支離滅裂でわがままばかり言っていた自分には忘れかけていたことでした。 助けてくれる人に無礼にしていたようで、なにか大切な何かを忘れて焦っていました。
guest

0

私は自分で自作できないものを使うのを嫌います。

どこかで妥協して下さい.

先人たちの成果にタダ乗りするのが嫌であれば, まずは「0」や三平方の定理を発明し, そこから2000年掛けて離散フーリエ変換理論を完成させて下さい. (つまりは不可能です)

と言うくらい, 現在の情報理論は高度な数学的・工学的な知識・経験の積み重ねの上に成り立っており, 皆その恩恵に預かっているのです. ですから, 先に進みたければどこかで妥協した上で, 見様見真似でいいですから自分で何かしらを作り上げる努力をすべきです.


エンジニアの方がどうやってopencvのような画像処理ツールを一から作ったのか興味があります。

まず, 数学者が基礎理論を論文として発表し, その内容の確からしさ・有益性が確かめられた後にその応用としてハードウェアが設計され, ソフトウェアエンジニアが設計書を描き, その内容に従ってプログラマーが逐一コーディングすることで作られています. その際には日進月歩で更新されていく理論の高度化を加味してインクリメンタルに少しずつ新たに機能を追加していきますから, いわば人類が画像処理ツールを作り上げたのであり, 換言すれば誰か一人の手によって作られたわけではありません.

投稿2018/04/18 10:18

編集2018/04/18 10:56
defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/04/18 11:35

今の私には妥協という行為は必要と同時に、できることを行います。 本当にありがとうございます。
carnage0216

2018/04/18 14:18

>>人類が画像処理ツールを作り上げた 自分の考えがいかに愚かで、無謀なことがわかりました。 なんだかプログラマの世界は素晴らしいですね。 どうもありがとうございます。
guest

0

まあ、なんとなくわかります

「自作できないものを嫌う」というよりは

「理解できてないものを部品にして作るのが不安」
「自分の制作物の中に自分の理解できないものが
含まれていると自分の制作物でない気がしてしまう」
って感じでしょうか

デジタル・アナログ問わず制作なんて多かれ少なかれ共同作業です
全く完全に自分で作り上げたものなんてないです

自ら進んで車輪の再発明のようなことはすべきではありません

ツールを使うときにはそのツールのルーツと進化の経緯から
そのツールの目的・抱えている問題、強いては哲学や思想を知ることで
その不安を多少なり解消できるかもしれません

自分もFlashやってた頃は物理シミュレーションとか画像フィルタを自作したりとかもしてましたが
知ったことは「やはり選ばれているものには選ばれるだけの理由があるんだな」ってことぐらいです

長い歴史と多くの人の改良を経たものと同様のものを自作する試みの労力は多くの場合水泡に帰します

全くの無駄だったってことはなかったにしろ、まあ、ほどほどにした方がいいですね

投稿2018/04/18 10:56

KazuhiroHatano

総合スコア7804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/04/18 11:03

>>「理解できてないものを部品にして作るのが不安」 「自分の制作物の中に自分の理解できないものが 含まれていると自分の制作物でない気がしてしまう」 って感じでしょうか たしかに、そのような気がします。
guest

0

ベストアンサー

最近は自動化がもてはやされていますが、単純でつまらないことは人がやらなくても良いという思いから来ています。

プログラミングは全てが電子データなので、自動化が古くから進んできました。

C++のテンプレートなんかは明確で、本来型ごとに同じようなコードを大量に書かないといけなかったものを、コンパイラが勝手に展開してくれるようになりました。

コンパイラなどは翻訳機です。
CPUごとに異なる方言を人間が全て覚えていなくても良いように、同じことを何度も書かなくても良いように、作業を手伝ってくれます。

アセンブリ言語や機械言語で書くことが理解の本質ではありません。
OpenCVを機械言語で書けることがOpenCVを理解した証とは到底思えません。

機能ごとの構造化を意識して、階層ごとに理解してください。


何のためにプログラミングをしているのでしょうか。

趣味でしょうか。仕事のスキルのためでしょうか。

よっぽどの仕事でない限り、アセンブリ言語を書けるというのは価値はありません。
コンパイラがやってくれるからです。
コンパイラより早くうまく仕事ができない限り、意味がありません。

そのあたりのことも考えてみてはいかがでしょうか。

投稿2018/04/18 22:38

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/04/19 02:32

>>アセンブリ言語や機械言語で書くことが理解の本質ではありません。 OpenCVを機械言語で書けることがOpenCVを理解した証とは到底思えません。 プログラミング というものをちゃんと理解できていませんでした。というか何か大切なことを忘れていました。 どうもありがとうございます。
guest

0

こんにちは。

私は自分で自作できないものを使うのを嫌います。過去の質問でもcmakeやvsを使いたがらなかったのは一生かけても自作出来ないと思った為です。

自動車や電車には乗らないのでしょうか? 船は? 飛行機は?
自動車なら不可能ではないかもしれませんが、その他の乗り物は個人で作るのは無理ではないでしょうか?

ソフトウェアにしても、アセンブラをハンドアセンブルで作るのでしょうか? そして、そのアセンブラで原始Cコンパイラを作り、その原始Cコンパイラで普通のCコンパイラを作るのでしょうか?
ブートストラップ問題と呼ぶそうです。個人でチャレンジすると、もしかしたら一瞬話題になれるかも?

でも、既にあるものを再開発するって虚しくないですか?
寧ろ、既にあるものをどしどし利用して、今までにないものを作るのはどうですか?
コンピュータ・プログラムは腕一つでそれに挑戦できる非常に楽しいものと思いますよ。

エンジニアの方がどうやってopencvのような画像処理ツールを一から作ったのか興味があります。

きっと、画像処理に興味を持った人が、多数の画像処理アルゴリズムを学習し、それをコンピュータで処理するにはどのようなデータ構造で表現するのが良いか検討し、試行錯誤しつつ「ちょうど良い」データ構造を作り上げたのだろうと思います。
データ構造が決まれば、アルゴリズムを1つ1つ実装し、速度を上げるためにSIMD命令を使える部分はどしどし使ったのではないかと思います。

元々OpenCVはC言語で書かれていましたので、最初の開発は恐らくC言語だったのではないかと思います。(恐らくアセンブラではないという意味で)

投稿2018/04/18 13:12

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/04/18 14:16

どうもありがとうございます。少しずつですがモチベーションが上がってきました。 本当にどうもありがとうございます。
guest

0

単純に興味から回答します

私は自分で自作できないものを使うのを嫌います

過去の質問でもcmakeやvsを使いたがらなかったのは一生かけても自作出来ないと思った為です。

とのことですが、既存の製品であるWindows等のOS、はたまたその更に低レベルで動くBIOSやEFIといったものを使う(利用する)ことにはためらいや嫌だとは思わないのでしょうか?

そこにためらいがないのだとするなら、OpenCVやCMake, Visual Studioもそういったものとして考えるのが良いと思います

投稿2018/04/18 10:18

MMashiro

総合スコア2378

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/04/18 14:20

>>既存の製品であるWindows等のOS、はたまたその更に低レベルで動くBIOSやEFIといったものを使う(利用する)ことにはためらいや嫌だとは思わないのでしょうか? そこまで気にしていませんでした。そこはどうしようもない部分なので諦めて使わせていただいています。
guest

0

一歩ずつ歩かないからそういう事になるんだよ…。

投稿2018/04/18 10:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/04/18 11:34

そうです。私が行っていた一歩が大きな間違いを生んでいました。反省して一から仕切り直します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問