一回も披露したことのない豆知識

業界のことがわからない初学者で現在は就活中です。
現在はRubyやRailsを習得していてWebアプリケーションの開発などができます。
チャットアプリの開発を行いそれをポートフォリオに就職活動を行っておりますが、汎用言語に興味をもっております。

AIであったりハッキング技術やセキュリティの分野でも活躍していますし、新しい何かを作ることや世の中を驚かしているのはC言語やPythonなのかなと感じます。


しかし現在はRubyなどのWeb系を専門に勉強していてこれからWeb系などの分野に携わろうとしていますが、ITエンジニアの中の違いや区分などの境界線などの理解が曖昧です。


例えば組み込み系やAIを利用した開発などをしたいと考えている人がRubyなどでWeb系に携わるのは全然門が違う話でしょうか?


知人には複数言語の使用ができる人がいますが、それはなぜでしょうか?

Webアプリの業務経験はエンジニアとして多言語やWebとは異なる分野の開発の際に経験値として役に立ちますか?


あとわたしは完全に方向性として全然違う方向に向かってしまっているのでしょうか?

A 回答 (2件)

> 現在はRubyやRailsを習得していてWebアプリケーションの開発などができます。



大変失礼ながらそれは単に特定の言語を使ったWebアプリケーションを作ることが出来る、動かせるまでにすることが出来る・・・ということかと思います。
仕事として行うには「システムの外見(機能仕様)を設計し」、「そのシステムを構成する個々のプログラムの外見(外部インタフェース)を設計し」、「さらに個々のプログラムの実現方式を設計し」、「それらを製造し」、「それらの試験設計を行い」、「その試験を実施するための環境やデータを用意し」、「設計された試験を実施し」、「試験の結果をまとめて評価し」、「システムとしての試験設計を行い」、「その試験を実施するための環境やデータを用意し」、「設計された試験を実施し」、「試験の結果をまとめて評価する」といった一連の作業が必要です。
加えて多くの実システムでは1人で一連の作業を行うことはあえりませんから、複数人で手分けして同じ品質のものを作るという連携も必要です。
なお、これらの開発の仕方はシステム開発を行う多くの会社では「開発標準」として定められてますし、システムを発注する会社側で「当社はこういう開発標準を持っているのでそれにしたがった開発を」と指定するところもあります。
いずれにせよ開発標準は「ソフトウェア設計技法」、「システム設計技法」に基づいたものですので、それらを少し勉強しておくとよいでしょう。


> しかし現在はRubyなどのWeb系を専門に勉強していてこれからWeb系などの分野に携わろうとしていますが、ITエンジニアの中の違いや区分などの境界線などの理解が曖昧です。

そこを理解することに意味は無いと思います。
それよりもご自身がやりたいと考えておられる分野の具体的内容を勉強されることです。
その開発にどういう言語を使うかはどうでもいいことで、その分野が進歩したりコンピューターを使う事全体に関する進歩でドンドン変わっていくものですから。。。
それよりも自分がやりたい事、興味がある世界のことを知ることです。例えばAIならAIとはどういうもので、どういう考え方に基づいてどのように作られているのか、どのような可能性があるものなのかを知ることです。


> 例えば組み込み系やAIを利用した開発などをしたいと考えている人がRubyなどでWeb系に携わるのは全然門が違う話でしょうか?

アマチュアのうちにそこを考えるのもまた無駄な事と思います。
プログラミング言語などというものは所詮は言葉(ことば)、それも人が使う言葉のサブセットみたいなものですから、何か一つしっかり理解できている言語があればあとは1週間もあれば解説書を見ながらソースコードを書くことが出来ます。「その言語に慣れた人はこんな書き方をして少ない記述で出来るようにする」とかあっても同じ機能を果たす物を少し書きものの量が増えても単純なやりかたで書くことは出来ます。多くの場合は。。。 で、両社の性能差はというと、多くの場合1秒も無かったり、せいぜい数分程度であったりします。
これは大抵の言語でコンパイラーが賢くなっているのと、CPUの性能があがっていることによります。


> 知人には複数言語の使用ができる人がいますが、それはなぜでしょうか?

知人という方が何をされている方なのかわかりませんが、システム開発の仕事をされている方でしたら「仕事上必要になった際に必要になった言語を学んだ」ということでしょう。
当方はシステム開発の仕事を30年ほどしていましたが、大学ではCOBOLとFORTRANしか学びませんでした。(←そしか講座が無かった)あと卒論の作成でBASICを独学してプログラムを作りましたが。
就職してからはアセンブラからはじまり、やがてC言語が必要になり、LISPやPrologが必要になり(途中Smalltalkというのを使った事も)、SGML・XML・HTML(CSSも)が必要になり、そうするとすぐにJavaが必要になり、Javascriptも必須となり、ドキュメント整備や試験作業などでVBA(Excelマクロ系)が必要になり、その辺が使えると社内でのボランティア的な仕事でVBが必要になり・・・という感じで使える言語が増えて行きました。
どういう仕事を受注あるいは担当し、それを開発するのに適した言語は何なのかによるということです。お客様が指定する場合もかなりあります。


> Webアプリの業務経験はエンジニアとして多言語やWebとは異なる分野の開発の際に経験値として役に立ちますか?

役に立たないことはないですし、そもそも言語とか開発環境などというものは時代や担当する作業で変化して行く物で、必要に応じて都度学べばよいだけのものです。深刻に考える必要は無いです。
それよりも仕事で使用する自然言語(日本にある多くの企業・組織では日本語)を使って各種の仕様書などの技術文書をしっかり書けることが大切です。
それと何より開発対象の処理アルゴリズムを考え、それを文書化出来ることです。

仕事で作成したシステム、それを構成するソフトウェアは開発者が転職したり定年退職したりした後まで残ることもあります。
そうでなくても改良や不具合改修をする際に開発者は他のシステム開発で手が離せなかったり他部署へ異動していたりして見てもらえなかったり相談できなかったりという事も多いです。
そういう場合、仕様書が非常に重要です。そこに書いてあるとおりに作られていればプログラムのソースコード解析の効率が非常に高くなり、短期間で改良や不具合の修正が出来ます。なので文書は非常に大切です。大きなシステムになればなるほど。

まぁ、そんな感じでご理解ください。
当方の印象としては「考えなくてよいことをとても気にして考えようとしておられる」です。他に学んでおくとよいことは多くあるのに。。。

参考まで。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にさせて頂きます。

お礼日時:2019/10/21 05:48

>知人には複数言語の使用ができる人がいますが、それはなぜでしょうか?


人によって異なりますが、「必要に迫られて」というのも可能性の一つとして挙げられます

例えばWeb開発をする場合、少なくともサーバ側で使用する言語(JavaやPHP,Rubyなど)以外にHTMLとJavascriptはまず必須です。
cssを言語と言ってしまうと語弊があるかもしれませんが、HTMLを書く以上はこちらも必要になります。
サーバサイドでデータベースを使うとなるとSQLも必要になってきます。


>Webアプリの業務経験はエンジニアとして多言語やWebとは異なる分野の開発の際に経験値として役に立ちますか?
言語によって学べる領域が違いますので、良い経験として役立つ可能性があります。
現在広く使われているプログラミング言語には大きく分けて、「手続き型」と「オブジェクト指向」と「関数型」の
3つがあります。学術的にはそれ以外も多くあり、中にはこの3つのうち複数の特徴を組み合わせた言語もあり、
また今後他の特徴を備えた言語が流行する可能性がありますが、現在メジャーな考え方としてはこの3つがあります。

それぞれ、手続き型はC言語、オブジェクト指向はJava、関数型はLISPが代表的です。
まず、この3種類の言語を学習することによって得られる知識は、それぞれ違ったものになります。
言語ごとに共通した機能があったり、共通して使える考え方があったりするため、すべてがすべて新しい知識になる
というわけではありませんが、それぞれの言語における特有の概念は学習してみないとなかなか得られるものではありません。
また、メモリーの操作やシステムコールなど、よりハードウェアやOSよりの部分を学びたい場合はCやアセンブラ、
逆に例えば大規模Webアプリの拡張性の高い実装の仕方など、よりプログラミングの手法や概念的な部分を学びたい場合は
JavaやPHPなどと、言語によりそれ以外の特徴も様々です。
最近では、より高品質のシステムを開発するために、テスト駆動開発と呼ばれる手法も一般的になってきましたが、
それぞれの言語ごとに、すでにノウハウが蓄積されていたりモジュールが用意されていたり、有利不利があったりします。


余談にはなりますが、下記のサイトで学ぶと、より良い知識と経験を得られると思いますので、
おすすめします。

低レイヤを知りたい人のためのCコンパイラ作成入門
https://www.sigbus.info/compilerbook#

以上、長文失礼しました。
    • good
    • 0
この回答へのお礼

参考にさせて頂きます。
ありがとうございます。

お礼日時:2019/10/21 05:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!