昨今、誕生するプログラミング言語の複雑さは異常

Too many a “200” over

この見出しの”200″は、世界中に存在するプログラミン言語の種類数を表しています。「over」という単語もあるので、まとめると「世界には200を超える数のプログラミング言語が存在」しているということです。プログラミング言語ごとに向き不向きを確かにあるかと思いますが、筆者としてはこの数は異常であると考えております。
※Linuxディストリビューションの方がまだマシですね。

プログラミング言語の変遷

最初に考案されたプログラミング言語というのは、電子機器を制御するために考案された「アセンブリ言語」と呼ばれるものです。次に、個人向け(趣味など)のプログラミング言語として「Basic言語」と呼ばれる言語が開発されました。その後、銀行システム向けなどとして「Fortran言語」など、いくつか考案されましたが数種類の言語のみで統一して使われてました。

ところが、インターネットが発展するにしたがって、プログラミング言語との総数が短期間に上昇してきました。同じ用途で使う言語であっても、数種類のプログラミング言語が登場しております。そして今日に至り、200種類を超えるプログラミング言語が存在することになってしまっております。選択肢は多いほうが良いと考える方もおるかと思います。

車輪の再発明

しかしながら、「車輪の再発明」という言葉がプログラミング業界において存在します。同じ機能を2回以上、コーディングすることを指しております。

選択肢が多いということは、最適なプログラミング言語を選択することが出来る反面、その最適なプログラミング言語を探す時間や労力などが負担となる上、選択したプログラミング言語の学習コストもかかってきます。特に、インターネットを介するWebアプリを開発するプログラミング言語については、増大する一方になっております。主な、言語を挙げてみますと「Perl・PHP・Ruby・Python・JavaScript(node.js)」が存在しておりますして、パッと考えただけでも5種類ものプログラミング言語が「車輪の再発明」を行ったということです。
※PythonとJavaScriptは別の分野でもよく利用されています。

プログラミングの基礎としてのC言語

昨今、聞かなくなりましたが、つい最近までは最初に学ぶ「プログラミング言語」として、よくC言語を覚えるべきというのが定番でした。筆者も、そう考えております。

基本的にプログラミング言語の行うことは、シンプル言うと「データの操作」と「デバイスの制御」に尽きます。「データの操作」は、「入力▶データ修正▶出力」ですし、「デバイスの制御」の機能については、「C言語とアセンブリ言語」のみしかサポートしておりません。つまり、ほとんどのプログラム言語は「データの操作」の機能のために「車輪の再発明」を行ったということです。

繰り返しますが、初学者が学ぶプログラミング言語は「C言語」が最適だと考えております。もし、他の言語からスタートしてうまく習得できたとしても、それは付け焼き刃に過ぎません。なぜなら、「C言語」を習得すること自体が、プログラミング初学者にとって大きな壁となるためです。もしも、「C言語」を理解せずに他の、プログラミング言語を習得しようとする際、同じ機能を同じ時間かけてまた習得しなければなりません。

プログラミングを理解するために

 

筆者は、今日(こんにち)使われているすべてのプログラミング言語は、すべてC言語から派生したプログラミング言語だと考えています。なぜなら、プログラミングのコーディングで記述したプログラムの流れは、「順列・分岐・繰り返し」が基礎となっているためです。
※JavaScriptは除く

オブジェクト指向言語

オブジェクト指向といったプログラミング言語がたくさんありますが、やはり「順列・分岐・繰り返し」の流れは存在しています。オブジェクト指向の場合、データの扱いをオブジェクトにまとめることで、C言語では配列や構造体までしかデータを効率的に扱うことができませんでしたが、リストや連想配列など、新しい構造でデータをまとめることが出来るようになりました。しかしながら、オブジェクト指向言語が登場したあたりから、様々なプログラミング言語が乱立するようになり、また、今までオブジェクト指向に対応していなかった言語も、オブジェクト指向のプログラミングが出来るようになってきています。

プログラミング言語の多様化

確かに、多くのプログラミング言語が存在することで、少しのソースコードだけで需要を満たすようなメリットは有るでしょう。しかしながら、多くのプログラミング言語から、最適なプログラミング言語を選ぶことは大きな労力が必要になります。もちろん、採用するプログラミング言語に対する知識も必要になってきます。プロジェクト単位のグループで開発を行う際には、各々のメンバーが採用するプログラミング言語に対する知識を持っていることが必要であります。

しかし、プログラミング言語の乱立による「車輪の再発明」及び「プログラミング言語の選定」に、時間をかける要因にもなることから、昨今のプログラミング言語の多様化は筆者は疑問に思っています。

以上になります。

まぁ、チラシの裏に書いとけって話ですけどせっかくブログあるので、書かせてもらいました。あと、ライブラリもですけどフレームワークも最近は乱立している傾向にあるので、一種類から三種類くらいまでに、統合していってほしいと思います。

情報リテラシー(ITに関連する知識)を向上させる方法

情報リテラシーを高めたい方へ

以前の記事で、「日本人の情報リテラシー」が低いことやその理由を主題にした記事を書きましたが、何から始めればいいのかという解決法を明快にしておりませんでしたので、一つの方法として”国家資格”を取得する(合格・非合格は問わない)ための勉強をすることを提案します。学生は学校により単位が・社会人は企業によっては手当てが支給されることもあるので、受験費を節約・もしくは還元することも出来ます。

唯一無二にしてIT系の国家資格

情報処理技術者試験の範囲

日本が国として認定している国家資格は「情報処理技術者試験」が存在しています。民間のIT専門の国家資格は多くありますが、その多くは自社製品の知識を会得させるための自社の社員教育のようなものであります。対して、「情報処理技術者試験」はITを活用するにあたって、コンピュータや情報を扱う状況になった時、必要となる基礎知識を問う内容になっております。

「情報処理技術者試験」は、利用する立場や難易度の異なる10種類以上の資格を含んでいます。中でも、「ITパスポート」試験は業種や職種を問わず、すべての社会人にとって必要な知識を試験範囲としています。従いまして、「情報処理技術者試験」は”IT技術”に関する内容だけではなく、”経済・経営”や”簿記”に関する事柄や、”法律”に関する内容も含まれております(“日商簿記”と重なる内容も存在)。このような幅広い分野から出題されるため、普段コンピュータを扱うことが殆ど無い方でも、有用となる知識が問われることになります。ただし、問われるのは座学となる知識だけなので、逆にIT業界で即戦力になるような、実践的な資格ではありません。

情報処理技術者試験の概要

「情報処理技術者試験」は、既に述べたように各分野の知識を問う試験の集合体です。ここ数年、「情報処理技術者試験」の構造は毎年のように再編されております。IT技術の進歩が早いことや、試験範囲が広いことによる各試験項目の見直しが為されているためだと考えております。現在、IT技術者向けと全ての社会人向けに大枠で別れており、社会人向けの「ITパスポート」試験は、CBT(Computer Based Testing)と呼ばれる形で受験することが出来ます(以前は春・秋で年に2回)。CBTの詳細については、この記事の題目から逸れてしまうことから詳しくは述べませんが、CBTを利用すると試験日程を受験者が決めることが出来ます。

「ITパスポート」試験の対象者(合格者)像には以下のように書かれています。

職業人が共通に備えておくべき情報技術に関する基礎的な知識をもち,情報技術に携わる業務に就くか,担当業務に対して情報技術を活用していこうとする者

コンピューター系のマガジンを購読

資格試験を受験する程ではない方や、資格試験を受験することに抵抗がある方は、コンピューター系の雑誌を購読することから始めることを提案します。近年は、電子書籍などの出現により、コンピューター系の雑誌の廃刊が進んでおりますが、インターネットでの検索の仕方などが不得意な方には、紙媒体の雑誌をオススメします。

主に、情報リテラシーを上げる方法は、当たり前かもしれませんがITの世界(インターネットなど)に、触れてみることだと思いますが、ITをあまり利用しない方では、表現はおかしくなりますがインターネットという場所に行くように言われても、おそらく尻込みするかと思います(英語学習者が留学するのと同じ)。となると、残りはIT系の書籍から、情報リテラシーを得るというのも難しいと思います。そこで、専門書ではなく軽めの雑誌から、情報リテラシーをカジッてみるのが、よろしいかと思います。

個人的におすすめなのが、「日経コンピューター」です。個人的な指標ですが、ITの世界の表面だけを眺めるような感覚で読むことが出来る、浅すぎず深すぎない絶妙な塩梅(あんばい)で、情報リテラシーを伸ばすことが出来るかと思います。

以上になります。

記載した方法以外にも情報リテラシーを上げる方法があれば、コメント等で教えてもらえれば幸いです。

日本人の情報リテラシー

情報リテラシーの低い日本人

いきなり、せっかく来てくださった閲覧者に対しての悪口になりますが、ご了承ください。ただし、これは少なくともたびたびインターネット上では取り上げられています。話は逸れますが、パソコン(パーソナル・コンピューターの略)をはじめとするコンピューター(計算機)に関する知識が低いことが、最近の世界各国に対して生産性が低いことの一つとも言えると、筆者の持論ですが原因ではないかと考えています。政府は、プログラミングの授業を義務教育に導入するとのことで、国民の生産性(”GNP”)をあげようと考えているように見えますが、ただ単にプログラミングの組み方を覚えたところで日本人の生産性が上がるとは、筆者は考えていません。

英語の普及率は・・・

例えば、既に英語が義務教育に組み込まれて数十年ほど経っておりますが、有効に活用できている人は全国民の何割なのでしょうか。主婦やアルバイト・パートなど非正規社員や、ましてや正社員などを含めても一割いるとも思えません。私も、海外さんのPCゲームをほぼ毎日プレイしておりますが、日本語版があるもの・MODと呼ばれる改造ファイルを利用して日本語に変換して遊んでおります(人のことは言えませんねw)。ただ、これが今の日本社会の実情だと考えております。

パソコンメーカーがテレビCMを展開する意図とは・・・

このような社会実情の中、パソコンを専門に扱う販売業者でも関わらず、テレビCMを展開しました。多くの人がパソコンを「使えるようになればいいな」という気持ちを持っておりますが、正直この宣伝は失敗していると考えています。「パソコンが流通すればパソコンを使う人が多くなる」わけではありません。「パソコンを使う人が多くなればパソコンが流通する」のです。つまり、逆です。読者の中で、会社の業務でパソコンを使っている方は多いかもしれません。しかし、会社の業務をこなすための道具であって、それ以上でもそれ以下でもない無いと思います。プライベートでも生活の一部として定着しない限り、日本人の情報リテラシーが向上することは無いと考えています。

情報の正確性(まとめ)

インターネットには、必ずや正しい正解ではない(この記事を含めて)のですが、テレビや雑誌などとは比べ物にはならないほどの情報が、あちこちにあります。正確じゃないから、インターネットの情報を信じない人も多くいると思います。では、テレビや雑誌の情報は正しいのでしょうか?それは、誰にもわからないでしょう。ならば、多くの情報を無料で取得できるインターネットの使い方を教育に導入するほか、社会人セミナーを開催するなどしたほうが、日本の生産性は上昇すると考えています。

以上になります。
まずは、インターネットに対する日本人の考え方を改めることが、QoL(クオリティ・オブ・ライフ)の上昇につながると考えています。

「レンタルサーバー・クラウドサーバー・VPS」の比較

ホスティングサーバーの種類

いろいろ事情はあるでしょうが、もし、Webサーバーを公開したいと思った時、どうすればいいのでしょうか?
【この記事は、これからWebサーバーを運営したい方】を対象にどのような運営方法があるのかを紹介致します。ただ、自宅で24時間365日起動できるパソコンが有る場合は、この記事については「こんな方法があるのか~」みたいな感じで読んでくだされば幸いです。

レンタルサーバー方式の特徴

Webサーバーの公開方法として一番ポピュラーなのは、「レンタルサーバー」を借りる方法でしょう。レンタルサーバーを提供している、主なサービスは”さくらのレンタルサーバー・ロリポップ”あたりでしょう。いろいろなオプションを付けることで、契約時の価格は変動しますが、レンタルサーバーの運営元がオススメしているのは「500円前後/月」のサービスです。
例えば、さくらのレンタルサーバーであれば、一月515円(執筆時)の契約で、「電話サポート・独自CGI・無料SSL・FTPサーバー・WordPress」など、静的なWebサイトでの運営であれば必要なサービスがひととおり揃えることができます。「レンタルサーバー方式」が向いているのは、以下のようなホームページを公開したい人です。

  1. コーポレートサイト
  2. 自分で広告を指定できるブログ
  3. 静的(独自CGI)は、あまり使用しないサイト

クラウドサーバー方式の特徴

クラウドサーバー方式のサービスは、Webアプリや動的なWebサイトを構築する用途に特に適しています。クラウドサーバーを提供している主なサービスは”AWS(Amazon Web Service)”になります。クラウドサーバーの特徴は、契約してすぐに開発環境や動作環境がセッティングされていることです。動的なWebサーバーの場合、サーバーサイドでプログラムを動作させる必要がありますが、既にセッティングされているので、バックエンド(HTTP(Web)サーバーやPHPのインストール)等の、知識がなくても、フロントエンド(JavaScript・PHP・Ruby・Python)の開発に取り掛かることが可能です。「クラウドサーバー方式」が向いているのは、以下のようなホームページを公開したい人です。

  1. 動的(独自CGI)なサイト
  2. Webアプリケーション

VPS方式の特徴

VPSとは、(Virtual Private Server)の略で、クラウドサーバー方式ではフロントエンドの知識が求められましたが、こちらはバックエンドの知識も求められます。殆どの場合、CentOSやDebianなど、なんらかのLinuxディストリビューションをクリーンインストールした状態で、コマンドラインで操作します。そのかわり、仮想OSですがインストールしたLinuxの管理者権限を取得できていますので、Webサーバーの種類を”Apache”にするか”nginx”を選択することができます。ただし、繰り返しになりますが、これらのソフトウェアの設定も必要になりますので、多くの知識が問われることになります。逆に言えば、自分好みのLinux環境を構築できますし、手軽にLinuxコマンドラインの勉強をすることができます。「VPS方式」が向いているのは、以下のようなホームページを公開したい人です。

  1. 制限なし(なんでもござれ)
    ※そのかわり、自分でやってね。。。

まとめ

Webサーバー公開までの手順の必要性や知識を、以下の表にまとめました。

レンタルサーバー方式クラウドサーバー方式VPS方式
難易度簡単フロントエンドの知識Linux全般
平均価格安い高い普通
自由度無いあまり無い多い

※一応、それぞれポピュラーな所の平均価格で相対的にまとめてみました。

Windowsでプログラミング学習をする方法

近頃開発されるソフトウェアの種類

少し前までは、コンピューター上で動作するソフトウェアと言えばデスクトップ型アプリが主流でしたが、最近ではWebアプリの方がかなり多く存在していると思います。

デスクトップ型のプログラミング言語は、”C/C++”や”Java”が多くコンパイルして機械語(コンピューター言語)で、動くものが比較的多く存在していました。現在では、WebブラウザでWebアプリを提供しているホームページにアクセスして、プログラムを利用する形式に移行してきています。ただし、ハードウェア情報(CPU・GPU・メモリの容量など)の情報を参照するようなものは、まだありません。

アプリ開発に必要なもの

プログラミング作業そのものは、どのようなプログラミング言語であれ”テキストエディタ”があれば、プログラムを作成することはできますが、実行する方法としてはデスクトップ型は主に”コンパイラ”が、Webアプリは”HTTPサーバー”と連携して動作する”拡張モジュールetc”が必要になります。

初期化したWindowsでは、プログラムそのものを書くことは出来ますが、プログラムを動かす方法を持っていません。
“コンパイラ”も”HTTPサーバー”も、インストールされていないためです。一応、マイクロソフト社から、”無料”でコンパイルする機能を保持している開発環境(IDE)をダウンロードすることはできますが、”HTTPサーバー”を必要とするWebアプリに関しては、サードパーティ製のソフトウェアを使う必要があるということになります。

デスクトップ型アプリの開発に必要なソフト

これまで伸びたようにWindowsでデスクトップアプリ型アプリの開発には”コンパイラ”が必要になりますが、マイクロソフト社謹製の”visual studio”の無料版を利用するか、オープンソースで開発が続いている”MinGW”を利用する必要があります。

“visual studio”は、一般的な統合開発環境(IDE)であり、インストールすると”C/C++”や”C#”のコンパイラが同梱されております。
“MinGW”は、WindowsでLinuxコマンドを利用できるようにするソフトウェアであり、その中にGCC(GNU Compiler Collection)と呼ばれる”C/C++”のコンパイラが同梱されております。

“visual studio”はGUIで操作することができる他、テキストエディタが同梱されていたりやコンパイル作業などが、ボタンを押すだけで実行することができるため、プログラミング学習の「入門者・初級者」向けの方法であると言えます。

“MinGW”はCUIで操作することが基本であること、コンパイラ以外に必要なものは、自分で用意する必要があるため、プログラミング学習の「中級者以上」の方向けの方法であると言えます。

  1. “visual studio”
    GUIで操作。必要なものは全て入っている。
  2. “MinGW”
    CUIで操作。テキストエディタなど自分で用意する。

Webアプリの開発に必要なソフト

Webアプリの作成に適しているプログラミング言語には、「PHP・Ruby・Python」が存在しておりますが、インターネットの普及に伴って浸透してきたプログラミング言語であるため、デスクトップ型の”C/C++”などのプログラミング言語より、あとに登場しております。あとから、登場しているが多くの開発者が利用しているということは、客観的にしても主観的にしてもデスクトップ型のプログラミング言語より、優れているということになります。(でなければ、普及しませんね。。。)
Webアプリの開発には、あまり統合開発環境(IDE)は利用されておりません。コンパイラが必要ないのです。

Webアプリのメジャーな開発言語「PHP・Ruby・Python」は、インタープリター型と呼ばれコンパイル作業(厳密にはコンパイルとは呼ばない)は、ソースコードの実行時にコンパイルされます。では、Webアプリの開発言語のコンパイルを逐次実行しているのは、何かと言うと広義の範囲で言えば、”HTTPサーバー(Apache・Nginx)”がしています。

これらは、どちらもフリーソフトであるため無料でダウンロードして利用することができますが、Webアプリを動作させるためには”HTTPサーバー”の拡張モジュールを別途で組み込んだり、設定をテキストファイルで記述する必要があるため、Webアプリの実行環境の構築(HTTPサーバーの設定)は、中上級者向けではありますが、一度、実行環境を構築してしまえばコンパイル作業が不要であるため、「入門者・初級者」向けであると言えます。

まとめ

以上のことを、以下の表にまとめます。

デスクトップ型アプリWebアプリ型
開発環境の用意簡単普通
実行環境の用意コンパイラが必要HTTPサーバーが必要

ただ、最近はWebアプリケーションのほうが、多くリリースされているので、多くの人に利用してもらいたいのであれば、Webアプリを開発すると良いでしょう。ただし、プログラムの動く仕組みやメモリ管理(最近はあまり聞きませんがw)などの勉強をしたいのであれば、デスクトップ型アプリを開発してみると良いでしょう。

統合失調症って結局の所どうなの?

精神疾患の病名の決め方

精神疾患と一言で言ってもたくさんの病名があり、いわゆる「うつ病」と一般的に呼称される正式な病名は「気分障害」と、なっております。「うつ病」って、なんとなく”何に対してもやる気が出ない”といったイメージがあると思いますが、それを「気分障害」なんて呼ばれると、昔はよく言われたものですが、「気持ちの問題」というように捉えがちになると思います。
じゃあ、「統合失調症」と言うと、かなり人格的に危ないイメージがあると思います。昔は、正式名称が「精神分裂病」なんて名前が付けられたものですから、当然といえば当然ですね。

この「統合失調症」と「精神分裂病」なのですが、名称の最後に”症”が付くか”病”が付くかで、大きく意味が異なってきます。

統合失調症の場合

まず、「統合失調症」ですが、これは最後に”症”という文字で終わってますね。この”症”の意味は、”症候群”の”症”であって、厳密に言うと実は病名とは違います。あくまで、そういう症状があるというだけであって、脳がおかしくなっているとかではなく、「統合失調症」で定義されている”症状”があるというだけなのです。たとえば、インフルエンザや何らかの風邪で、鼻水が止まらないのであれば”鼻炎”と言われますが、これと同じです。「統合失調症」は、定義された症状があるのですが、根本的な原因となるものがわからなくても「統合失調症」と診断されます。

逆に、旧名の「精神分裂病」の場合、”病”という文字で終わってますので、病名として判断されます。つまり、医学的に原因がわかっているということです(名称が変わったので、脳がおかしくなったとは限らない)。ただ、現在も脳内の伝達物質が原因であると考えられていますが。。。

精神科医にとっての統合失調症

筆者は、現在通っている精神科では「統合失調症」と診断されていますが、自分で言うのもなんですが、脳がおかしくなった人がこのような文章またはブログを書けるでしょうか。あくまで、「統合失調症」で定義されている症状があるだけであって、躁うつ病の患者を「統合失調症」と診断する精神科医も、存在します。筆者の場合、ドクターショッピングをしたことがあるのですが、「不安障害による統合失調症」と診断されることもありました。

つまり、単に「統合失調症」と診断された方は、脳がどうにかなったのではなくて原因がわからないとおっしゃる先生もいました。

肩を落とす必要はない

結論として私が言いたいのは「統合失調症」と診断されたからといって、「おかしくなったわけではない」と言うことです。先ほども書きましたように、「脳の伝達物質が正常に動作しない」と考えられていますが、実際のところ根本的な原因は、はっきりわかっていません。ですので、「統合失調症」と診断されたからといって、人生が終わったと考えるのは時期尚早であると思います。

まとめ

以上になります。病名をオープンにするかクローズにするかは人それぞれですが、精神疾患になっても回復に務めるのが一番だと考えています。

Trendプロテクト等によるWebサイトの評価のメリットとデメリット

皆さんはウイルス対策ソフトを使っていますか?

現在、ウイルス対策ソフトは、無料版のものから有料版のものも含めると20種類近く、存在しています。これら、すべてのウイルス対策ソフトではないのですが、トレンドマイクロ社のウイルスバスターやシマンテック社のノートンなど、複数のウイルス対策ソフトにはGoogleなどで検索した際に表示されるWebサイトを色分けして、表示されたWebサイトの安全性を評価しております。

 

ただ、かなりのサイトが評価されているようで、実際に検索してみると緑色で「安全」と表示されております。特に、以下のようなWebサイトがホワイトリストに記録されているようです。

  • アクセス数が多い
  • SEO対策をしている

Googleなどの検索サイトを利用するだけなのであれば、「それなら、問題ないのではないか。」と考える人が多いと思います。しかし、Webサイトを作成する側にとっては、このウイルス対策ソフトの機能はとても厄介な問題となります。

Webサイトに対する評価機能の問題点

ドメイン名をホワイトリスト形式で記録することで、Webサイトを評価していることは既に述べました。しかし、この方法では次のような問題があります。

  1. 中古ドメインサイトで購入されたWebサイトが悪意のあるサイトを作っても「安全」と表示されてしまう
  2. 新規にWebサイトやWebアプリなどを作成して利用者にとって有益になるものであっても「安全」と表示されない

Webサイトを正当な評価にしてもらうには

トレンドマイクロ社の場合、「Trend Micro Site Safety Center」にアクセスして、Webサイトの安全性を評価してもらうことができます。

上記のサイトにアクセスして、ドメイン名を入力して申請すれば、大体一週間ほど(運営者の場合)で、評価してもらえるようです。直接、SEO対策には直結する話ではないのですが、やはり「安全」と評価されているWebページのほうが、利用者としてはアクセスしやすいと思います。

ただし、この方法で解決するのは、トレンドマイクロ社のウイルスバスターだけですので、その他のWebサイトの安全性の評価を申請しなければなりませんね。

まとめ

各社の「Webサイトの評価機能」は、確かに評価時点(時刻)では問題がないのかもしれませんが、時間の経過によってコンテンツが変わる可能性があるため、ドメイン名による評価方法は限界があると考えています。

こちらのサイトで、この問題について認識しました。

ウイルスバスターと検索結果に緑色や灰色のマークが付く件

プログラミングを始めるにあたって必要なこと

プログラミング言語はコンパイル型(中間言語含む)の「C/C++・C#・Java」等とスクリプト型(JIT)の「PHP・JavaScript・Ruby・Python」等があります。また、”デスクトップ向けアプリ”と”Webアプリ”の作成に用いられる言語で、プログラミング言語をグループ分けすることもできますが、最近では、”Webアプリ”に使うことができるプログラミング言語に、人気が集中しているようです。

人気のあるプログラミン言語を、最初に勉強する方も多いと思いますが、パソコン(ハード面)やネットワークの知識がないまま勉強することは、効率が悪いと考えています。

上にも述べたように、最近はWeb系の言語の人気が高いようですが、”インターネットの仕組み”や”Webセキュリティー”の知識を持たずにプログラミングされた製品やサービスは、クラッキングの対象となり、バックドアや他のパソコンへの踏み台にされてしまう可能性があります。

個人的には、「基本情報技術者」レベルの知識を持っていたほうが、プログラミングの習得速度も上がると思いますし、当然ながらセキュリティー対策の必要性も理解できるようになり、ソースコードの理解が早くなると考えています。

他にも、「静的型付け・動的型付け」の違いなどプログラミング言語ごとに特徴がありますが、まずは、プログラミングをやる前にプログラミングを走らせる対象のことを知っておいたほうが、よりプログラミングの上達度にも良い影響があると思います。