ここから質問投稿すると、最大4000ポイント当たる!!!! >>

これからプログラミングを学ぼうと思っているのですが調べてみるとプログラミング言語も学習用の書籍もホームページやアプリも沢山あってどれが本当に良いのかよくわかりませんでした。
みなさんのオススメを教えてください。

A 回答 (6件)

「ヒューマン・リソース・マシーン」に一票。

(ただし、関数の概念がないのでそこが減点)

あとは俺が好きだった本
https://www.amazon.co.jp/dp/4000077511
https://www.amazon.co.jp/product-reviews/4798039 …

手続き型言語なら言語は何でもいいかな…。
    • good
    • 0

私はC#を最初の言語としてお勧めします。


理由は…
1.IDE(統合開発環境)が優秀で無料で入手できる。
→他の言語では前提条件としてランタイムやビルドツール、テストツール、バージョン管理システムクライアントといったものを個別にインストールしたり設定する事が求められますが、C#の開発環境Visual Studioは全部まとめてインストールしてくれます。
2.GUIのアプリケーションが簡単に作れるため、作れた気分になれる。
→モチベーションの維持がしやすい
3.使用用途が増えている言語である。
→Windows、macOS、iOS、Android、Linux向けのアプリケーションが開発でき、また、Unityのスクリプト言語に使用されています。
4.C++から理解しにくい部分を引いた言語である事。
→C#はその言語性格が、C++からポインタや多重継承といった理解しにくい部分を差し引いたような言語になっています。
 構文もC++とC#はよく似ており、C#の知識を足掛かりにしてC++に進出すると、理解しやすいです。
 そしてそのC++は「何でも何とかできる」最終手段に近い言語であるのでできると便利です。
 ただ、いきなりC++に手を出すとよっぽど強い動機が無いと心が折れます。
5.C++ライブラリと相互運用が可能。
→C++は何でもできて動作速度も速くて都合がよい言語ですが、扱いにくい言語です。
 一方C#はそこそこ速くて扱いやすい言語です。
 そしてその両方が混在したプログラムを作る事が簡単にできます。
 ですから動作速度を必要とする部分はC++で、それほど重要ではないところはC#でといういいとこどりがやり易い言語なので何かと便利です。

最後に…
プログラミング言語の違いは英語やフランス語の関係とよく似ています。
確かに言語の違いは重要ですが、それよりもその言語でどんな小説(=プログラム)を書くかの方が遥かに重要です。
開発環境が作りやすいとか公式ドキュメントがしっかりしているといった条件を満たしている言語から始めればよいです。

プログラミングは基本的に分岐する、ループする、何かを呼び出すという3種類の行動の塊ですので、とりあえず都合の良い言語で感覚を磨いてから必要に迫られて他の言語を覚えても遅くありません。
    • good
    • 0

プログラミング言語で、これ覚えとけばあらゆる用途にオールオッケーと言うのはありません。

まあC/C++がそれに近い位置にいるかも知れませんが、コンピュータの動作そのものをある程度理解してることが前提みたいなところがあり、OSやデバイスドライバまで作成できる粒度の細かさがあるけど、それだけに初心者には非常に学びづらい言語です。

とりあえず何もインストールせずに初心者でもすぐ使える言語ってことなら、javascriptがあります。これはwebブラウザで実行されるもので、作成もWindowsだったらメモ帳(notepad.exe)でできるため、お手軽さではおそらく究極です。その代りできることはブラウザ上で可能なことに限られるので、汎用性はありませんけどね。

この両者はかなり両極端な例で、その中間に多種多様な言語があります。特定用途に特化したものから汎用的なものまでいろいろあるし、それらの中でもまた複数の言語があったりします。だからいろいろありすぎて迷うのは当然ですが、まずは自分がやりたいことの一番の最低ラインを決めて、それが可能な言語はどれですかって相談することでしょう。
    • good
    • 0

何のために学ぶのか。

どの分野でプログラミングを活かすのか。プラットフォームは何を想定しているのか。こういったことを明らかにされないと答えようがありません。
    • good
    • 0

大学の研究所で使うもの ゲーム作成で使うもの キャラクター作りで使うもの オフィスで使うものと 千差万別だから 「何を作りたいか」に則って学ぶといい。


絞ったら それを中心に置いて 周りのものを貼り付けていくといい。
    • good
    • 0

MSのビジュアルベーシックが、易しくて本も多い。


以下無料サイトも充実、20年以上昔、数万円で買って
いたプログラミングソフトです。

Visual Basic 中学校
http://rucio.a.la9.jp/main/main.htm
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qプログラムの在宅請負業務ができるようになるまで、どのくらいの期間?

プログラミングの初歩的な事も分からず、プログラミングが全く未経験の人間が、これからプログラムを独学で学んで、プログラムの在宅請負業務ができるようになるまで、どのくらいの期間が掛かると思いますか?

Aベストアンサー

プログラミングが全く未経験の人間が独学で学んだとして、それなりにプログラムができるようになるまで10年くらいでしょうか?それから在宅請負業務ができるまで、さらに5~10年くらいかなあ?

実際問題として、独学で学んだ開発実績ゼロなプログラマに、会社は仕事の依頼はしないでしょう。

QC++を本で独学してますが、配列とポインタでわからないところがあります。

現在C++を本で独学しており、ポインタの章を終えて配列の章を
学んでいるのですがでわからないところがあります。

『配列名は配列の先頭要素のアドレスをあらわす。』と習ったのですが、
下記のコードにての

#include <iostream>
using namespace std;

int main()
{
char str[] = "Hello";
cout << str << '/\';
return 0;
}

を実行すると"Hello"が出力されるとのことですが、
どうしてchar型配列strの要素をそのまま出力することになるのでしょうか?
この場合、『配列名は配列の先頭要素のアドレスをあらわす。』に
のっとれば出力されるのは「char型配列strの先頭要素のアドレス」に
なり、アドレスが出力されなければおかしいと思うのですが・・・?

同様に

#include <iostream>
using namespace std;

int main()
{
char* char = "Hello";
cout << str << '/\';
return 0;
}

のコードでもどうして間接参照演算子*さえ使わずに
strの要素を出力できるのかがさっぱりわかりません。

ご説明頂ければ幸いです。

現在C++を本で独学しており、ポインタの章を終えて配列の章を
学んでいるのですがでわからないところがあります。

『配列名は配列の先頭要素のアドレスをあらわす。』と習ったのですが、
下記のコードにての

#include <iostream>
using namespace std;

int main()
{
char str[] = "Hello";
cout << str << '/\';
return 0;
}

を実行すると"Hello"が出力されるとのことですが、
どうしてchar型配列strの要素をそのまま出力することになるのでしょうか?
この場合、『配列名は配列の先頭要素...続きを読む

Aベストアンサー

cout の << は。その後の型によって何を表示するかが変わります。
このような仕組をポリモーフィズムと言って、C++の重要な仕組の一つです。


他のポインタだと、そのアドレスを出力する、となっています。
対して、 char * だと「その示すアドレスから順番に、'\0'の前までの『文字』を出力する」となっています。

これは、以下のような理由があります。
・C++の元になったC言語では、「文字列型」というものが無く、「charの配列の先頭から'\0'の前までを文字列として扱う」というルールを使っている。
C++でも、そのルールを引き継いで、char * / char[] を文字列として扱うケースが多い。
・cout << にchar * を指定したとき、圧倒的に「文字列を出力したい」ケースが多い


アドレスを出力させたいのなら、char *でないポインタにキャストすることです。
そういう時は、汎用につかえる void * にキャストするのが常套手段です。

C言語由来の記法では (void * ) str と、(型)とします。
ですが、このキャストはなんでも有りすぎるので、C++ではC++専用のキャスト方法が用意されているので、そちらを使いましょう。
static_cast<void *>(str)

cout の << は。その後の型によって何を表示するかが変わります。
このような仕組をポリモーフィズムと言って、C++の重要な仕組の一つです。


他のポインタだと、そのアドレスを出力する、となっています。
対して、 char * だと「その示すアドレスから順番に、'\0'の前までの『文字』を出力する」となっています。

これは、以下のような理由があります。
・C++の元になったC言語では、「文字列型」というものが無く、「charの配列の先頭から'\0'の前までを文字列として扱う」というルールを使っている。
C++で...続きを読む

Qプログラミングについてです。 はじめまして。お読みいただきありがとうございます。僕はプログラミングを

プログラミングについてです。

 はじめまして。お読みいただきありがとうございます。僕はプログラミングを勉強しているのですが、壁にぶつかってしまって困っています。
 元々IT関係のことが好きで、スマホやパソコンやガジェット、ブロックチェーンなどのことを調べていくうちにプログラミングをしてみようと思って今に至ります。
 本やサイトで学んでも文法ばかりでどうすればいいかわからなくなり、調べると、
「つくりたいものをまず見つけるといい。」
と書いてあったのですが、作りたいものといっても思い付いたものはすべてアプリストアにあったり(基本的にはLINEみたいないろんな人の役に立つアプリがつくりたいです。)、OSやAIなど今の自分には作れそうにないものばかり…
 そんなこんなで始めて数ヵ月になります。
 不便なことを探して改善といっても、特に不便なことはないと感じています。(具体的にどういうことかがわかりません。)
 プログラミングが楽しくないというわけではなく、バグが直ったり、自分なりのやり方でできたときは喜びを感じます。
 数ヵ月もしてなにもできないということは向いていないのかな?とも感じています。
 
 長くなりましたが、上記のようなところを考えておすすめの勉強法や、つくりたいものの見つけ方などを教えてほしいです。

プログラミングについてです。

 はじめまして。お読みいただきありがとうございます。僕はプログラミングを勉強しているのですが、壁にぶつかってしまって困っています。
 元々IT関係のことが好きで、スマホやパソコンやガジェット、ブロックチェーンなどのことを調べていくうちにプログラミングをしてみようと思って今に至ります。
 本やサイトで学んでも文法ばかりでどうすればいいかわからなくなり、調べると、
「つくりたいものをまず見つけるといい。」
と書いてあったのですが、作りたいものといっても...続きを読む

Aベストアンサー

>「つくりたいものをまず見つけるといい。」
 理屈ばかり勉強していてもこれは退屈で飽きてしまうのは目に見えている。
 世間に公開するほどでなくても、作って良かったと思えるモノを作れるとそれは楽しいし自分への励みにもなる。

>作りたいものといっても思い付いたものはすべてアプリストアにあったり
 この辺はプログラム初心者がみてしまうと絶望感を抱くというか、せっかく本人なりに苦労して開発してもすでに無償ソフト(フリーソフト)として公開されていたりすると、「このフリーソフトに勝てる気がしない」とか複雑な思いを抱きます。

 この辺の事情はさらに勉強に励んでひたすら改良を繰り返してよりよいモノに改善していくか、別のアプリ開発にも挑戦してみてジャンルの幅を広げてみるか。

 IT技術というとWEBを連想しますが、すでにWEB関連の技術者はかなりひしめき合っていると思うので、余裕があるなら今後のめぼしい技術としてIoT関連技術にも首を突っ込んでおくとヨイかもしれません。

 実践あるのみ・・・と思っているのでなにかマイコンで電子工作をしてみるとかですね。

>
KKHMF Mini USB Nano V3.0 ATmega328P CH340G 5V 16M マイクロコントローラーボード モジュールArduinoと互換
https://www.amazon.co.jp/KKHMF-ATmega328P-CH340G-%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89-%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%ABArduino%E3%81%A8%E4%BA%92%E6%8F%9B/dp/B073CHKMB2/ref=sr_1_10?ie=UTF8&qid=1551533368&sr=8-10&keywords=arduino+nano


>Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Clear)-Physical Computing Lab
https://www.amazon.co.jp/Raspberry-%E3%83%9C%E3%83%BC%E3%83%89%EF%BC%86%E3%82%B1%E3%83%BC%E3%82%B9%E3%82%BB%E3%83%83%E3%83%88-Physical-Computing-Lab/dp/B01CSFZ4JG/ref=sr_1_10?ie=UTF8&qid=1551533423&sr=8-10&keywords=%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A4

 個人的には学習用マイコン ラズベリーパイがお薦めですが、必要開発機材を一式そろえようとすると1万円の費用が掛かるので無理なら格安で提供されているArduinoをいじってみるのもおもしろいと思います。

>「つくりたいものをまず見つけるといい。」
 理屈ばかり勉強していてもこれは退屈で飽きてしまうのは目に見えている。
 世間に公開するほどでなくても、作って良かったと思えるモノを作れるとそれは楽しいし自分への励みにもなる。

>作りたいものといっても思い付いたものはすべてアプリストアにあったり
 この辺はプログラム初心者がみてしまうと絶望感を抱くというか、せっかく本人なりに苦労して開発してもすでに無償ソフト(フリーソフト)として公開されていたりすると、「このフリーソフトに勝てる気...続きを読む

QC#言語学んで

実際にプログラム打ち込んでも無反応です
何か打ち込んでもダメです
そしてエラーが起きます

Aベストアンサー

> そしてエラーが起きます

という事は、開発環境なんかはインストール、設定されてるって事ですね?

まずは、サンプルプログラムを打ち込む、というかコピペしてみては。

Microsoft .NET - Hello World -- 最初のプログラム (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/inside-a-program/hello-world-your-first-program

で、エラーが出るなら、エラーメッセージの内容を提示すると、問題解決の手掛かりになるかも。

Qc言語の課題がわかりません

XOR を用いて文字列の暗号化及び暗号化された文字列の復号化をするプログラムを作成し,暗号化した文字列の結果は code.txt に出力し、復号化する際には code.txt からファイルを読み込んで復号化することとし、入力する文字列は最大で 9 文字までとする。暗号化および復号化には鍵として1つの文字用いる。鍵は暗号化の際に入力させ、復号化の際にも同じ鍵を用いる。暗号化は文字列の各文字ごとに鍵との間の XOR を取るものとする。と課題で出たのですが、自分には難しすぎて出来ません。どなたかおしえてください。プログラムの途中経過と実行例を記しておきます。
#include<stdio.h>
int main(){
int x;
char a[256],b[256];

printf("Select Mode 1.Encryption, 2.Decryption :");
scanf("%d",&x);
if(a==1){
printf("Input passphrase :");
scanf("%s",a);
printf("Input key:");
scanf("%d",b);
}else{
printf("Input key:");
scanf("%d",b);

}

if(a==3){
printf("Invalid value\n");
}
return 0;
}
<実行例 1>
Select Mode 1.Encryption, 2.Decryption : 1
Input passphrase : password
Input key : $
TEWWSKV@
<実行例 2>
Select Mode 1.Encryption, 2.Decryption : 2
Input key : $
Code : TEWWSKV@
Decode : password
<実行例 3>
Select Mode 1.Encryption, 2.Decryption : 3
Invalid value

XOR を用いて文字列の暗号化及び暗号化された文字列の復号化をするプログラムを作成し,暗号化した文字列の結果は code.txt に出力し、復号化する際には code.txt からファイルを読み込んで復号化することとし、入力する文字列は最大で 9 文字までとする。暗号化および復号化には鍵として1つの文字用いる。鍵は暗号化の際に入力させ、復号化の際にも同じ鍵を用いる。暗号化は文字列の各文字ごとに鍵との間の XOR を取るものとする。と課題で出たのですが、自分には難しすぎて出来ません。どなたかおしえてください...続きを読む

Aベストアンサー

以下、ファイルの入出力を絡めると理解が遠のくので、
シンプルに、画面を通しての入出力動作をするものにしました。
forループの中で行っている1行が最も重要な箇所なので、じっくり理解して下さい。

#include<stdio.h>
#include<string.h>

int main() {
int x;
char a[9+1];
char b[1+1];
char r[9+1];

memset(a, 0x00, sizeof(a));
memset(b, 0x00, sizeof(b));
memset(r, 0x00, sizeof(r));

printf("Select Mode 1.Encryption, 2.Decryption : ");
scanf_s("%d", &x);
if (x == 1) {

printf("Input passphrase : ");
scanf("%s", a);

printf("Input key: ");
scanf("%s", b);

} else if (x == 2) {
printf("Input key: ");
scanf("%s", b);

printf("Code : ");
scanf("%s", a);

printf("Decode : ");

} else {
printf("Invalid value\n");
return 0;
}

for (unsigned int i = 0; i < strlen(a); i++) {
r[i] = a[i] ^ b[0];
}

printf("%s\n", r);

return 0;
}

以下、ファイルの入出力を絡めると理解が遠のくので、
シンプルに、画面を通しての入出力動作をするものにしました。
forループの中で行っている1行が最も重要な箇所なので、じっくり理解して下さい。

#include<stdio.h>
#include<string.h>

int main() {
int x;
char a[9+1];
char b[1+1];
char r[9+1];

memset(a, 0x00, sizeof(a));
memset(b, 0x00, sizeof(b));
memset(r, 0x00, sizeof(r));

printf("Select Mode 1.Encryption, 2.Decryption : ");
scanf_s("%d", &x);
if (x == 1) {

printf(...続きを読む

QC#について質問【複数の.datファイルからデータを取得後csvファイルでリストを作成】

いつもお世話になります。
複数の.datファイル(カンマ区切りの4~5列、約800行程度)
ProcessData,LOT_ID,3,AP0076686.00C,
ProcessData,LOT_ID_SUB,3,AP0076686.00,
ProcessData,LOT_NO,3,AP0076686,
ProcessData,WAFER_ID,3,AP0076686.19,
ProcessData,WAFER_NO,1,19,
ProcessData,PRODSPEC_ID,3,T5DH20001-00001.00,
ProcessData,PRODGRP_ID,3,T5DH2,
ProcessData,PRODGRP_BIND,3,T5DH2,
ProcessData,MAIN_MAINPD_ID,3,A6L511NY.00,
ProcessData,MAINPD_ID,3,A6L511NY.00,
ProcessData,FLOW_TYPE,3,Main,
ProcessData,FLOW_TYPE_NO,1,1,
ProcessData,D_SEQNO,1,169,
ProcessData,OP_NO,3,PNH PEP.MA1,
ProcessData,OP_NO_NAME,3,本処理,
ProcessData,PD_IDENT,3,PPNHIMA1.00,
ProcessData,PD_IDENT_NAME,3,PEP,
ProcessData,EQP_GROUP_CODE,3,PKRF,
ProcessData,EQP_GROUP_NAME,3,KrF SCANNER(SK3000 + ES5),
ProcessData,EQP_GROUP_BIND,3,PKRF,
ProcessData,EQP_ID,3,PKRF004,
ProcessData,PH_RECIPE_ID,3,PES5MIX,
ProcessData,RCP_NAME_SPACE,3,PEPMA,
ProcessData,LC_RECIPE_ID,3,PKRF.01,
ProcessData,RECIPE_ID,3,PEPMA.PES5MIX,
ProcessData,S_DATE,4,2019/01/24 12:47:09,
ProcessData,E_DATE,4,2019/01/24 12:47:51,
ProcessData,CAST_ID,3,PA0-00349,
ProcessData,SLOT_NO,1,19,

の中からSplitを用いて string[]dataTemp = fileData.Split(',');で
(ProcessData[0],EQP_ID[1],3[2],PKRF004[3],)のように配列に格納して
ifを使ってdataTemp[1] == "EQP_ID"の時にdataTemp[3](PKRF004)を
    dataTemp[1] == "LOT_ID"の時にdataTemp[3] (AP0076686.00C)を
    dataTemp[1] == "WAFER_ID"の時にdataTemp[3] (AP0076686.19)を
dataTemp[1] == "S_DATE"の時にdataTemp[3](2019/01/24 12:47:09)を
新たにCSVファイルを作成して上記のデータを入力したリストを作りたいのですが、C#初心者で
色々と試行錯誤しましたが知識が足りないようです。。。。


リストについてはヘッダーなどは必要ありません。.datが大量にあるので一列にEQP_ID、LOT_ID、WAFER_ID、S_DATEが並んだ状態で何100行とある状態リストを作成したいです。

詳しい方ご教授をお願いいたします。

いつもお世話になります。
複数の.datファイル(カンマ区切りの4~5列、約800行程度)
ProcessData,LOT_ID,3,AP0076686.00C,
ProcessData,LOT_ID_SUB,3,AP0076686.00,
ProcessData,LOT_NO,3,AP0076686,
ProcessData,WAFER_ID,3,AP0076686.19,
ProcessData,WAFER_NO,1,19,
ProcessData,PRODSPEC_ID,3,T5DH20001-00001.00,
ProcessData,PRODGRP_ID,3,T5DH2,
ProcessData,PRODGRP_BIND,3,T5DH2,
ProcessData,MAIN_MAINPD_ID,3,A6L511NY.00,
ProcessData,MAINPD_ID,3,A6L511NY.00,
ProcessData,FLOW_TYP...続きを読む

Aベストアンサー

質問内容が多岐に渡ってきているため、どこまで出来て、どこが出来ないのか、を整理して、
改めて質問を行うことをお勧めします。

今できないのは、元の質問内容ではなく、それぞれのロジックの書き方を理解していませんよね。
C#の文法。
対象ディレクトリ内のファイルの一覧を得るにはどうすればいいのか。
ファイルの読み込み、書き出しをするにはどうすればいいのか。
繰り返し処理するにはどうすればいいのか。
など。

最終目的を質問しても、誰も正解は教えてくれませんし、ネットには正解は転がっていません。
知識、情報を組み合わせて正解を作り上げるので。

そのため、実現するためのプロセスを細分化し、プロセス単位に方法論をネットで調べるとか、質問するとかになると思います。

Q現在プログラミングの研修中なのですが、ピラミッドのなどの図形を表示するプログラムが難しすぎます。 ピ

現在プログラミングの研修中なのですが、ピラミッドのなどの図形を表示するプログラムが難しすぎます。

ピラミッドはなんとかできるのですが、それを応用したひし形や真ん中を切り抜いたものなど、、

無理やりやれば表示することはできます。

このようなことはどのように勉強すればいいのでしょうか?

よろしくお願いします。

Aベストアンサー

アルゴリズム。。。
つまりは「入力されたデータをどのように処理したら求める結果を出すことが出来るか」考えることを学ぶと。

これはプログラム記述言語を使って考えるのではなく、その人が日常使っている自然言語(多くの日本人の場合は日本語)で考えます。
箇条書きでもよいし、何らかのチャート図を知っていたらそれを使って考えをまとめてゆくのでもよいでしょう。

https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0

参考まで。

Qマクロ無しで時間自動で記入をしていきたい

すごく贅沢な話なのですが・・・
マクロを使わず、通常のエクセルで時間を手入力でなく何かしらしたら(例:「1」と入力)自動で別セルに現在時刻ほ記載してくれる

マクロだと下記のような内容でやってます(一部)
Range("H3:K33").Select
Selection.Copy
Sheets("結果").Select
Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

マクロを使わずやれる方法はないでしょうか・・・

Aベストアンサー

論より 証拠、

作ってみました。


式、
=TEXT(IF(ISBLANK(B1),IF(ISBLANK(A10),B10,TODAY()),"此処が 変わります。"),"rr/mm/dd hh:mm")

ファイル、
https://1drv.ms/x/s!AjviygfJDgV_3GnS4Ko-q3mWU9fP

尚、
ファイルは 1度、
ローカルに 別名保存して、
其の保存ファイルを 扱うように、
してくださいね、

別名保存でないと、
意味が 無いですよ。


さすれば、
閲覧も、編集も、
叶うものと 思いますよ。

Qプログラミングに興味があります。 僕の勝手な考えですが、今配信されていないClipbox がインスト

プログラミングに興味があります。

僕の勝手な考えですが、今配信されていないClipbox
がインストールされている端末のClipboxの情報を
Clipboxがインストールされていない端末に移動(コピー)すればインストールされていなかった端末でもClipboxが使えるようになるのではないかと思っているのですが、
できないですかね。


(まだなんの知識もなく、プログラミングを勉強するつもりなので出来るようであればやってみたいなと思っています。)

Aベストアンサー

それとプログラミングにいったい何の関係があるのかって言うのは疑問ですが、アプリをコピーできれば使えるようになるってのはその通りです。そのためのアプリも実はすでにあったりします。

Q関数によって、MAX_PATHの値が異なる理由を教えてください。

MAX_PATHは260固定なのに、関数によって異なる理由を教えてください。

CreateFileは259文字まで、それ以上は関数が失敗します。
MakeSureDirectoryPathExistsは248文字まで、それ以上は関数が失敗します。
renameは220文字まで、それ以上は関数が失敗します。

Aベストアンサー

昔のファイルシステム(FAT)ではパス名の最長が255文字に制限されていました。
それに、ドライブレター等(C:¥)3文字とファイル名(8+3)の間のピリオド1文字で
255+3+1=259文字が最長パスです。
さらに、C言語で作成されたライブラリでは、
文字列の末尾にはNull文字(0x00)を付ける約束になっています。
それを含めて、MAX_PATH=260 となっています。
今どきのファイルシステム(NTFS)とはかなり違いますよね。
そんな訳で、時代とともに移り変わるシステムの中身が、
統一が取れているはずと思う方がおかしい。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング