はてなキーワード: c#とは
読める!読めないけどなんか読めるぞ!
后端开发
JavaC++PHPPythonC.NETC#GolangNode.jsRubyGIS工程师ERP技术开发游戏开发工程师音视频/图形开发全栈UE4编译器开发ErlangDelphiVBPerlASP
前端开发
移动开发
AndroidiOSU3DCocos2d-xWindows Phone移动开发工程师
PCB工程师射频工程师FPGA工程师单片机工程师DSP工程师驱动开发嵌入式软件开发嵌入式硬件开发信号完整性工程师硬件工程师硬件测试工程师硬件产品经理ARM
测试
自动化测试功能测试性能测试游戏测试软件测试移动端测试测试开发测试工程师测试经理/主管
数据
爬虫数据挖掘工程师数据分析师数据建模数据库开发工程师数据仓库工程师数据治理BI工程师ETL工程师大数据开发工程师数据开发数据采集
人工智能
推荐算法搜索算法自然语言处理(NLP)机器视觉图像算法语音识别深度学习机器学习算法工程师
运维/技术支持
运维经理/主管运维开发运维工程师DBA网络/信息安全网络工程师系统管理员系统工程师IT支持工程师桌面支持IT总监/经理/主管配置管理工程师硬件维护工程师系统集成工程师文档工程师
通信标准化工程师核心网工程师数通工程师无线通信工程师无线网络优化通信传输工程师通信电源工程师通信软件工程师通信技术工程师通信项目管理增值产品开发工程师通信设备工程师通信测试工程师电信网络工程师电信交换工程师电信/通讯工程师
高端技术职位
CTO/CIO/技术VP数据科学家大数据架构师大数据总监架构师安全专家运维总监技术合伙人技术/研发总监技术/研发经理
其他IT互联网技术
其他IT互联网技术职位
IT互联网产品
互联网金融产品经理电商产品经理数据产品经理移动产品经理商业产品经理硬件产品经理策略产品经理用户产品经理游戏策划师游戏制作人产品专员/助理产品经理产品总监产品VP/CPO
消费品/其他产品
快消品产品经理旅游产品经理教育产品开发保险产品开发/项目策划金融产品经理汽车产品规划机械产品规划其他产品职位
互联网运营
数据标注直播运营产品运营用户运营数据运营内容审核内容运营活动运营游戏运营策略运营新媒体运营社区/社群运营海外运营网站编辑网站运营运营专员运营经理/主管运营总监线下拓展运营网站营运管理网店运营网站策划
业务运营/其他运营
门店运营销售运营房地产运营其他运营职位
UE/视觉/平面设计
UI设计交互设计用户研究用户体验设计视觉设计动效设计网页设计品牌设计平面广告设计平面设计设计经理/主管美术/图形设计设计总监
工业/家居设计
家具设计家居设计玩具设计计算机辅助设计工程师工艺品/珠宝设计包装设计工业/产品设计
游戏美术设计
話題になっている、世界一流エンジニアの思考法という本を読んだ。
その中に「理解に時間をかける」というのがあったのだが、それがどうしても受け入れられない。
これがどのような考え方かというのは、ここに書いてあるので良かったら読んでみてほしい。
https://note.com/simplearchitect/n/n388201603a28
凄く引っかかるのが、
「今までは、実際にコードに触れないとわからないよね?と思っていたけど、そうではなくて、ドキュメントを読んでいて理解できない箇所がでてきたら、時間をかけて理解して進むようにした。」
というところ。
例えばだけどif文についてのドキュメントを1回読んで、
なんとなくこう動くんだろうなということが分かったとしたら、あとは動かしてみたほうが早くない?とか思ってしまう。
それとも、なぜC#のif文は{}で括っているのか、[]ではだめなのか?C#の成り立ちから調べよう!ということを頭の良い人たちはしているのだろうか?
ドキュメントがわからないときどこまで深追いをしていくのが「理解」なのかがわからない。
そして私みたいに頭が悪いと、一度深淵に潜り込んでしまうと二度と浮かび上がってこれないかもしれないという恐怖がある。
Visual Studioでコードを書いているが、そういえばVisual Studioのことを「理解」していないな。と思ったら最後、
Hello Worldを出したいだけなのに永遠にVisual Studioの領域から出ることが出来なくなってしまうのではないかと思ってしまう。
この本を読んで参考になった!理解に時間をかけることを恐れずにしよう!と言ってる人たちはどこまで時間をかけることを想定しているのか?
何なら死ぬまで理解に時間をかけてやろうというぐらい覚悟ガンギマリの人たちなのだろうか。
ほかの部分については言っていることがとてもわかるだけに、
わし「メールでよく使われるmbox形式のファイルを読みたいんや。dotnetならどうするといい?」
Bing先生「MimeKitとかMboxReaderという.NETライブラリがええで」
わし(ほーん、MimeKitええな。。。MboxReaderってどんなんやろ)
わし(あれれ、MboxReaderとかいう.NETライブラリは無いぞ・・)
わし「MboxReaderの詳しいところ教えてや」
どや」
わし「ほーん・・・?」
わし「MboxReaderとかいうライブラリって実在するん?」
Bing先生「するで。これや https://github.com/nodemailer/mbox-reader 」
今までだと嘘はすぐに破綻してたはずなのに、今度の嘘はなかなか破綻しないぞ・・・
今、「MboxSharp」とかいう架空の.NETライブラリの説明を受けてる・・・
しかしさすがのBing先生、MimeKit の中の Rfc2047 クラスの使い方をちゃんと教えてくれた。
まあ Stack Overflow にも書かれてある事をまとめただけではあるが。。
やっぱ先生はすげえんよ。
お前のいう通り書いたったわ(C#だが)。
//宇宙 namespace Universe { //あらゆる神の根底に存在する唯一神とその司る運(スーパークラス) public class GodLuck { public string Name { get; } //神の名前 public string Power { get; } //神の力 public string Plan { get; } //神の計画 public string Factor { get; } //運の要因 public GodLuck(string name, string power, string plan, string factor) { Name = name; //神の名前 Power = power; //神の力 Plan = plan; //神の計画 Factor = factor; //運の要因 } //神が何かを創造するメソッド public void Create(string thing) { Console.WriteLine($"{Name} created {thing}."); } //神が何かに対して支配や介入をするメソッド public void Control(string thing, string action) { Console.WriteLine($"{Name} {action} {thing}."); } //運が何かに対して影響を与えるメソッド public void Affect(string thing, string outcome) { Console.WriteLine($"{Name} affected {thing} and the outcome was {outcome}."); } } //恵比須様 public class EbisuSama : GodLuck { public EbisuSama() : base("恵比須様", "商売繁盛や五穀豊穣の力", "人々に幸せを与える計画", "商売繁盛や五穀豊穣の要因") { } //作物を守る public void Save(string crops) { Control(crops, "守る"); } //人間を成功させる public void MakeSuccessful(string person) { Affect(person, "成功"); } } }
(大いなる力を別のクラスに移譲したくなったが、神と大いなる力は同一のオブジェクトという要件があるからやめた)
//宇宙 namespace Universe { //神の振る舞いを定義したインターフェイス public interface IGodLuck { public string Name { get; } public string Power { get; } public string Plan { get; } public string Factor { get; } //神が何かを創造するメソッド public void Create(string thing); //神が何かに対して支配や介入をするメソッド public void Control(string thing, string action); //運が何かに対して影響を与えるメソッド public void Affect(string thing, string outcome); } //恵比須様 public class EbisuSama : IGodLuck { public string Name { get; } //神の名前 public string Power { get; } //神の力 public string Plan { get; } //神の計画 public string Factor { get; } //運の要因 public EbisuSama() { Name = "恵比須様"; //神の名前 Power = "商売繁盛や五穀豊穣の力"; //神の力 Plan = "人々に幸せを与える計画"; //神の計画 Factor = "商売繁盛や五穀豊穣の要因"; //運の要因 } //神が何かを創造するメソッド public void Create(string thing) { Console.WriteLine($"{Name} created {thing}."); } //神が何かに対して支配や介入をするメソッド public void Control(string thing, string action) { Console.WriteLine($"{Name} {action} {thing}."); } //運が何かに対して影響を与えるメソッド public void Affect(string thing, string outcome) { Console.WriteLine($"{Name} affected {thing} and the outcome was {outcome}."); } //物を守る public void Save(string thing) { Control(thing, "守る"); } //人間を成功させる public void MakeSuccessful(string person) { Affect(person, "成功"); } } }
まずC#でどのようなソフトウェアが作られているかを調べてみて、その中に興味を持てる分野があればそれを作るために何が必要か調べてみるといい
教科書読むだけでワクワクして勉強進められるなら、何読んだって良い
実際に動いているソフトウェアのソースコード読みたいならgithubを探索してみるといい
構文とかライブラリの使い方はやりたいことによって変わるし、デザパタや〇〇原則みたいなのは個人製作ではどうでもいい