タイトル見てピンと来た人は、以下、読まなくて大丈夫です。
はい。今回もCopilotの仕様事例です。
はじめに
高言語とは低言語とは
高言語とは、人間にとって読み書きしやすいプログラミング言語のことです。例えば、C#やJavaなどが高言語に分類されます。高言語は、低レベルの処理を抽象化してくれるので、開発効率や保守性が高くなります。しかし、汎用性を高める為に様々な余分な処理があります。
ビッグデータ等の取扱いにあたりデータアクセス速度は時に必要なテクニックとなります。(そんな課題一生に一度会うか合わないかレベルだと思いますが・・・。)
実例
Me:「C#でStreamデータを保存する処理を書いて」
C#
using System.IO;
public void SaveStreamToFile(Stream input, string filePath)
{
using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
input.CopyTo(fileStream);
}
}
Me:「この実装をC言語にして」
C
#include <stdio.h>
void SaveStreamToFile(FILE *input, const char *filePath)
{
FILE *outputFile = fopen(filePath, "w");
if (outputFile != NULL)
{
char buffer[1024];
size_t bytesRead = 0;
while ((bytesRead = fread(buffer, 1, sizeof(buffer), input)) > 0)
{
fwrite(buffer, 1, bytesRead, outputFile);
}
fclose(outputFile);
}
}
(う~ん例外処理等書いたりデザインパターン考えると微妙だな)
Me:「bufferを可変にできない?」
C
#include <stdio.h>
#include <stdlib.h>
void SaveStreamToFile(FILE *input, const char *filePath, size_t bufferSize)
{
FILE *outputFile = fopen(filePath, "w");
if (outputFile != NULL)
{
char *buffer = (char *)malloc(bufferSize);
if (buffer != NULL)
{
size_t bytesRead = 0;
while ((bytesRead = fread(buffer, 1, bufferSize, input)) > 0)
{
fwrite(buffer, 1, bytesRead, outputFile);
}
free(buffer);
}
fclose(outputFile);
}
}
注意
あえて、色んな説明を省いています。重要な事は以下の通りです。
- コードレビューをしっかりしましょう!
(したからこそ、「bufferを可変にできない?」という追加のやり取りがあります。) - デザインパターン・イディオム・定石を理解しないと痛い目にあいます。
((う~ん例外処理等書いたりデザインパターン考えると微妙だな)という観点。) - AIは労働者として使うは時代遅れかもしれません。レビューアとして使用する方が将来自分の糧になるかもしれません。(古い考えかもしれませんが・・・。)
最後にレビューしてもらった
検索汚染になるので、以下画像です。
素晴らしい!(私も同じ指摘をしています。)
え!?
お・・・。おみそれしやんした!?
コメント