「C++」を含む日記 RSS

はてなキーワード: C++とは

2025-03-14

原点に戻ってJavaやるかな

考えてみれば、1995年Javaアルファ版をダウンロードして、

Windows 95やLaser5のLinuxディストリビューションインストールして、

大学サボってJavaコード書くようになったんだよなぁ、長いわ…😟

その前はQuickCとかTurboCとか使ってた気がするけど、あんまり身につかなかったというか、

PC-9801ちょっとグラフィックスっぽいこと試すのも色々面倒というのもあったんで、

スプライト出して終わりみたいな感じだったんだけど、

Javaになったら2Dゲーム作れるし、3Dゲームも作れるし、なんか一気に開けたんだよね、世界

そのあと、逆にCとかC++理解したり書けるようになったし、

まあ、Swingが出た当初は、訳あって実家マシンを使うことになっちゃって、

それが当時はそこそこの性能だったはずで、プリインストールされてたバーチャロンちゃん動作したし、

それで遊んだりもしてたんだけど、Swing動かすのはつらかった…、AWTは軽いのになんで?と思った

でも、しばらくしてマシンも新調して、Swingもまともに動くようになったし、NetBeansは良くできてたよね

NetBeansの作者が書いてるAPI設計の本は、今でも名著にあがることがあるよね

で、話が現在になって、JavaFXが微妙なのは否めないんだけど、まあよくできてはいると思うし、

実例が少なすぎる気はするものの、試してみるかなぁ、と思ったり…

デスクトップアプリを楽に作る方法として、TauriとかElectronとかC#系とかも考えてるけど、

原点回帰Javaしばらく気楽にやってみるのもいいかなぁ、と思ったのでしたまる…😟

GUIって、やっぱり日本語ちゃん入力できないと駄目だよね

RustとかGoとかで、クロスプラットフォームGUIあるけど、日本語入力が駄目な気がする

Qtはいいんだろうけど、まあ、あれもなぁ…😟

SDL上で独自GUI作って、日本語入力できるようにしたりとか、なんかつらかった思いであるし…

JavaAWTSwingJavaFX、EclipseSWT?だっけ、どれも日本語入力問題ないよね

そういえば、いつだったかMacOSXアップデートSWTが正常動作しなくなって、Eclipse全滅でAppleクソやなと思った思い出が…😟

2025-03-12

anond:20250312203351

結局のところ、全部OOPで済まそうとすると帯に短したすきに長しなのよね。

からモダン言語OOPOOP以外も可能ハイブリッド戦略をとっている訳ですしおすし。今でも割とOOP成分多めなのってObject Pascal系譜とかじゃないかな、汎用な言語だと。

んで、C++C#も後付けでOOP以外の機能が付け加えられているけど、その分だけ言語仕様増改築されてややこしいから、それよりも新規言語作っちゃおうってパターンはあるわな。

2025-03-09

anond:20250309101753

行き先までの経路をC++で書くらしいよ

2025-03-04

結局、C++パッケージマネージャはどれがいいんだろう?

やっぱりcargoとかnpmとかcomposerとか便利だよね…😟

2025-02-26

C++20のconceptってなんか使い道が思いつかない

SFINAEでたくさん書かないといけない時に短くできるってのが例に出てたしそれは便利そうには見える

templateを学んだときは一気に世界が広がる感じがしたけど、うーん

C++オッサン暴言動画

コイツってもともと商業的な仕事拒否して、世捨て人みたいな生活してたから、

一般的価値観に縛られないタイプぐらいに思ってたけど、

今は、他人を見た目でディスったり、下流階級とか言ったり、そういう奴だったんだな

2025-02-15

FlashDevelopで思い出したけど、

Adobe Flash Builder使ってた頃とかの方が、今より色々楽しかった気もする…😟

haXeミニゲーム作ったりしてた時期もあったけど、ActionScriptって、初期の単純な仕様だったJavaみたいにシンプルなんで、

TypeScriptで書くときも似たように書いちゃうけど、C++もBetter Cっぽく書いたりしちゃうし、

新しい機能とか仕様かめんどくさいんだよね、同じこと書けるなら古い仕様で書いてしまう…😟

ジョブズFlash潰されたのは悔しいけど、JavaScriptで十分というか、Flash軽く凌駕する世界になったよなぁ

悔しいけどジョブズ見立ては正しかたことになる…😟

そういえば、Webアプリビジュアル機能Flashにするか、まだWebブラウザに標準実装されてないCanvasにするかで争ったことがあって、

自分Flash推しで、Flash本当に死んでからCanvas移行すればいいんでは?(その頃はThree.jsなんてないし、そんなの夢のまた夢の時代なんで)

上司Flashなら3Dバリバリ使えますよ、って言ったんだけど、却下されたんだよね…😟

でも、Canvas2D実装した方が、現状でもまだ動いてるし、上司Canvas推しした人の判断は正しかった、俺は間違ってたんだな…

3Dグリグリ回して、客を驚かせたかったんだけどなぁ…😟

anond:20250215072405

javajavascriptとjsとcとc++c#と、もはやなにがなんだかわからない

2025-02-04

for文を使いたくないのはletを使いたくないか

https://gakuzzzz.github.io/slides/for_loop_to_higher_order_functions/#1

久々にアホな記事を見たので反論しておく

そもそも関数型にする大きな動機は「バグを減らすため」

これはオブジェクト指向でも同じでみんな「バグを減らすため」にいろんなパラダイムに挑戦してる

それ以外のHowだとかWhatだとかオブジェクト世界を表すだとかどうでもいい

結果的バグが減るならそれでいい

for文よりmapとかfilterの方がなぜバグが少ないか、というと「余計な操作が入りにくいから」

特にletで宣言してるような書き換え可能変数っていうのはバグの温床

例でも挙がってるようなProductのpriceの書き換えでもfor文にするとどこかにletな変数を置かないといけない

そんでletな変数っていうのはうっかり消してしまったりうっかり書き換えてしまっても気付くことができない

からconstで固めて何かしらのリスト処理をするときmapなりfilterなりを使ってconstに固め直す(か、そのまま使う)

逆に言うとそういう処理がないならfor文使っても全然構わない

本当に繰り返し処理をするんだから何も問題無い

この書き換え不可能変数を作るっていうのはCだとかC++だとかJavaだとかの頃からずーっと一緒でとにかく固めておきたい変数final宣言して書き換えさせない

そうしないと、めちゃくちゃ分かりづらいバグが混入して無意味に1週間とか過ごすことになる

Product.priceを直接書き換えるのはいいの?っていう疑問があるかもしれないが

これもしっかり規制するってのがオブジェクト指向的考え方で

「そこまでせんでも致命的にはならん」

っていう感じで型のチェックだけするのがTypeScript

まぁTSでもClass作れるから好きにすればいいんだけど

とにかくプログラミングに関する規則でHowだとかWhatだとかそういうフワフワしたこと言い出したら要注意

たぶん大学とかでフワフワしたプログラミングだけしてて碌なプロダクト作ったことない

ちゃんとしたプログラマーは

「これでバグが減ります(そして生産性が上がります)」

と言ってくれるから、そういうやつだけ重宝しろ

2025-01-27

あーやっぱC++書くのって楽しい

生産性ゼロのただの遊びでもなぜか何か有意義なことをやってる気持ちになれる

2025-01-17

[] The Comprehensive Compendium of Programming Wisdom: Navigating the Multidimensional Landscape of Software Craftsmanship

Programming proficiency necessitates a comprehensive understanding of multifaceted concepts, paradigms, and philosophies that underpin the art and science of software development. The Unix philosophy, with its emphasis on modularity, simplicity, and composability, serves as a foundational ethos for elegant code design. This philosophy advocates for creating small, focused programs that excel at singular tasks, facilitating the construction of complex systems through the judicious composition of these atomic units.

Algorithmic Mastery and Data Structure Optimization

Proficient programmers must possess an encyclopedic knowledge of algorithms and data structures, enabling them to architect solutions with optimal time and space complexity. This encompasses a deep understanding of sorting algorithms (e.g., quicksort, mergesort), searching techniques (binary search, depth-first search), and advanced data structures (red-black trees, B-trees, Fibonacci heaps) The ability to analyze algorithmic efficiency using Big O notation is paramount for creating scalable solutions.

Paradigmatic Versatility

Object-Oriented Programming (OOP)

OOP principles—encapsulation, inheritance, and polymorphism—form the bedrock of modern software architecture. Mastery of design patterns (e.g., Singleton, Factory, Observer) and SOLID principles is crucial for creating maintainable and extensible codebases.

Functional Programming (FP)

The FP paradigm, with its emphasis on immutability and pure functions, offers a powerful approach to managing complexity and facilitating parallel execution. Proficiency in higher-order functions, currying, and monads is essential for leveraging FP's full potential.

Advanced Language Features and Metaprogramming

Expertise in language-specific advanced features, such as C++'s template metaprogramming or Python's metaclasses, allows for the creation of highly generic and reusable code. Understanding compiler theory and the ability to write domain-specific languages (DSLs) further expands a programmer's capabilities.

Concurrent and Parallel Programming

In an era of multi-core processors and distributed systems, mastery of concurrent programming models (e.g., actor model, communicating sequential processes) and parallel algorithms is indispensable. This includes proficiency in lock-free data structures, memory models, and synchronization primitives.

Systems Programming and Low-Level Optimization

A deep understanding of computer architecture, operating systems, and memory management enables the creation of highly optimized, low-level code. This encompasses knowledge of cache coherence protocols, CPU pipeline optimization, and assembly language programming.

Security and Cryptography

In an increasingly interconnected world, a thorough grasp of cryptographic principles, secure coding practices, and common attack vectors (e.g., buffer overflows, SQL injection) is crucial for developing robust and secure systems.

Version Control and Collaborative Development

Proficiency in distributed version control systems (e.g., Git) and collaborative development practices (code reviews, continuous integration) is essential for effective team-based software development.

Testing and Quality Assurance

Advanced testing methodologies, including property-based testing, fuzzing, and formal verification techniques, are indispensable for ensuring software reliability and correctness.

 

In conclusion, the pantheon of programming knowledge extends far beyond mere syntax mastery. It encompasses a rich tapestry of theoretical concepts, practical skills, and philosophical approaches that, when harmoniously integrated, enable the creation of elegant, efficient, and robust software systems. The relentless pursuit of this multifaceted expertise is the hallmark of a truly accomplished programmer.

2025-01-14

ITエンジニアになったブロントさん

ある日、俺はとてつもない強さを持つ伝説戦士から現代社会適応すべくITエンジニアになることを決意した。

理由簡単、「ITってのは強そう」という噂を耳にしたからだ。

何でも、プログラムってやつを駆使して人間生活支配するらしい。

支配?つまり俺の得意分野だな、と。

そんなわけで転職した俺だったが、最初から順風満帆はいかなかった。

初めてのコードとの出会い

入社初日、先輩のプログラマーが俺に「まずはこのコードを読んで理解してください」と言ってきた。

見ると画面いっぱいに意味不明文字列が並んでいる。

C++Python?そんなの関係ない。

俺は最強だから言語を超越して理解できる……はずだった。

だが、「int main()」の時点で頭が真っ白になった。

「何これ、意味わかんない」と正直に言ったら、先輩が「これがプログラム入口です」と教えてくれた。

入口?それなら俺に任せろ。

ダンジョン入口をくぐるのは俺の十八番からな。

意気込んで読み進めたが、if文の「条件分岐」という概念に遭遇して衝撃を受けた。

「こいつ、戦士の行動を制御する気か……」。

どうやら俺は、この「if」という謎の呪文と戦うことになりそうだ。

強敵デバッグとの戦い

ある日、俺は初めて自分プログラムを書いた。

それは簡単計算アプリだったが、実行ボタンを押した瞬間、エラーが100個以上出てきた。

「え、何で?」。

自分の最強のコードが動かないなんて、ありえない。

ブロントさん、これデバッグしないと動きませんよ」と言われた。

デバッグ?敵の名前か?ならば戦って倒すまでだ。

「どこからエラーが出ているのか確認してください」と言われたので、「どこでもいい、俺がすべてを解決する」と豪語した。

が、実際にはセミコロンの付け忘れという初歩的なミスを指摘されてしまった。

「この程度のミスなど、俺の中ではノーカン」と誤魔化したが、内心めっちゃ恥ずかしかったのは言うまでもない。

チーム開発の試練

ITエンジニアは、どうやら一人で全てを成し遂げるものではないらしい。

チームで開発するのが常識らしく、俺も例に漏れプロジェクトに参加することになった。

だが、俺は気づいた。

「チーム」ってのは、つまりお互いのスキルを信じる必要があるということだ。

だが俺は信じられるのは自分だけだと思っていた……。

ミーティングでは他のメンバー技術用語を次々に口にする。

CI/CD」「Docker」「REST API」……完全に魔法使い呪文だな、と感じた俺は、「俺にはもっと物理的な仕事をくれ」と頼んだ。

しかし、どうやらこの世界では「物理的な力」よりも「論理的な力」が重要らしい。

悔しいが、俺は少しずつ「コードを書くという戦い方」を覚え始めた。

俺、IT界に立つ

数か月後、俺はようやく小規模なアプリを独力で完成させることができた。

その瞬間、気づいた。

コードを書くってのは、戦士の剣を振るうのと同じだ」と。

剣で敵を斬るように、コードエラーを倒し、社会問題解決する。

それが現代戦士ITエンジニアなんだと悟ったんだ。

今では、俺のエンジニア仲間から戦士エンジニア」として頼りにされるまでになった。

強さとは何かを語るなら、それはただの力ではない。

仲間を信じ、論理的に戦い、最後まで諦めない心だ。

結論:俺がエンジニア界を支配する

振り返れば、プログラムと戦う日々は険しかった。

しかし、俺はこうしてエンジニアという新たなフィールドで生き抜いている。

これからも新たな言語技術に挑み、デバッグという名の強敵と戦い続けるだろう。

なぜなら、俺はブロントさん。

どんな困難でも、「俺が本気出したらこんなもん余裕だから」 ってな。

2025-01-13

南千住スーパーキャベツ600円になってた

白菜は四分の一で159円

給料は月額10.8万円で、全く上がってない

家賃郊外住まいなので三万円程度だが、これじゃ生活できない

かといって発達障害持ちなので転職したところで面接そもそもからない

人事も発達障害に苦しめられてきたせいか何となくではあるが、分かるようになってる

持ってるスキル

html,c++,c#,rails,vba,scss程度はできて、独学でアルゴリズム設計手法勉強した

ソフトは何本か作り、ホームページは何本か作れる

宅建士、行政書士

だが、発達障害持ちのせいで最低賃金しかもらえねえ。

ぐぐってみると、発達障害もちは最低賃金でもまだマシな方らしい。

なのに医者野菜をとれとぬかしやがる。

医者給料なら、まだできるだろうけど、この賃金で、賃金アップも見込めない状況で、どーすりゃいいんだよ。

南千住スーパーまわったけど、安い野菜は軒並み売り切れて、高い野菜しか残ってない。

医者患者低所得者層が混じってることを理解せず、なぜ野菜が買えないのか理解しようとしない。

まじイライラする。

anond:20250113104244

同じことをCで書いてみれば、C++Javaでやってることは理解できるようになるはず…😟

2024-12-31

年末オレオレ戦記

プログラミング知識完全ゼロ状態から趣味C++をやり始めて数年が経った。

ポインタだのテンプレートだのデザインパターンだのややこしそうなものに一通り触れてみて多少は理解できたと思う。

ただ実際に何か作ろうと簡単ゲームなんかに手を出すとマジックナンバーがどんどん出てきてしまったりして本当にただのサンプルみたいな拡張性の無いものになってしまう。

機能独立性を保って責任範囲をはっきりさせようとかマップや敵モンスター自動生成してリプレイ性を上げようみたいに頑張って意識高いことを考え出すと作業量が膨大になってしまい終わる気がしない。

そんな感じで向いてなさそうに思えてきたのでそろそろ潮時なのかもしれない。

成果としてはUnityUnreal Engineの偉大さを実感として知ることができたということだけかもしれない。

2024-12-28

平凡なWebエンジニアの悩み

今までのキャリアで後悔があるとするなら、CやC++での開発に業務で関わらなかったこである

現在ミドルウェアシェアがあるものはCやC++で書かれてるのもが多いように思う。未だに新しく出るものを見てもそのようなものがある。

(最近だとRustやGo製があるが)

一般的インターネットサービス開発においては、LL系GoTypeScriptなどで開発されるので、Cなどで開発する機会は今やほぼ無いはずであり、私も通ってこなかった。

しかGitHubで著名なDBやKVSを見るとCで書かれていたりして、コードリーディングが捗らなく歯痒い思いをするのである

さらに昨今パブリッククラウドを使った開発がよくあるだろうが、難しいことは大体API越しに隠蔽してくれているのである

そしてパブリッククラウド事業者は、その難しいことを実現するのに、前述のミドルウェアホストしたり、拡張したり、時には自前で作るわけであるが、そこでもCなどは出てくるのであろう。多分。

OS開発やチップ開発みたいに、同じインターネット業界でも、パブリッククラウドミドルウェアCDN事業者などは一種レイヤーというか違う業界になってると思う。

要はそこに1エンジニアとして見たときに、C言語などが一種参入障壁になってると思ってて、平凡なWebエンジニアには近いようで遠い世界に見えるのである

そして、うまく表現出来ないが、特にパブリッククラウドの上に乗っていると、エンジニアとして相対的価値が下がっていくような感覚に苛まれる。

APIを叩くだけで楽だが、その向こうには難しいアルゴリズムオンプレサーバーがあるわけで、そういう知識はどんどん向こう側に蓄積されていくのである

とはいえ、それで顧客価値が届いて事業が成立するのであれば、それはそれで構わない。

とりとめのない内容ではあるし、生成AIやLLMの進歩により、このような悩みが杞憂になる可能性もあるが、あと30年どうやって生き延びていけばいいか悩んでいる。

2024-12-07

Audio programming

JUCE関連

オーディオプログラミングするなら言語C++メジャーらしい。JUCEというVST(DTMソフトプラグイン)とか作るやつがC++なのもある。「音」が波形で時系列に並んでるからレベルよりの言語が向いてるんだろうか。

チュートリアル動画がほぼ英語のしかない?

web上でtone.jsとか

その他

SoundFontの取り扱い02 – SoundFontのフォーマット | C++でVST作り

ttps://github.com/FluidSynth/fluidsynth というのもある

(VSTは高いのだと何万とかするけど儲かるんだろうか)

資料

わかりやすもの

[増田アイディア]

2024-12-01

Macってデスクトップアプリを作らせる気がないよな

windowsならC++かいゴミじゃなくてC#で気軽にデスクトップアプリを作れるが

Mac選択肢が無さすぎる

個人が気軽にアプリ作ったり配布したりできないように嫌がらせしているとしか思えない

Macアップル製のコンピュータアップルから与えられた物を与えられた範囲内で使うだけの脳死信者以外は使わない方がいいな

2024-11-22

プログラム言語の人気推移

https://survey.stackoverflow.co/2018#technology

https://survey.stackoverflow.co/2020#technology

https://survey.stackoverflow.co/2022/#technology

https://survey.stackoverflow.co/2024/technology

-2018202020222024
JS69.867.765.3662.3
Python38.844.148.0751
TS17.425.434.8338.5
JAVA45.340.233.2730.3
C#34.431.427.9827.1
C++25.423.922.5523
C言語23.021.819.2720.3
PHP30.726.220.8718.2
Go7.18.811.1513.5
Rust-5.19.3212.6
kotlin4.57.89.169.4
Ruby10.17.16.055.2
Swift8.15.94.914.7
Scala4.43.62.592.6


変化がわかりやすいように2年ごとにした

PythonTSとRustの勢い凄い

JAVAって永遠に人気なのかと思ったけど、10年後人気言語と言えなくなってるかも

PHPはそろそろ厳しい

Gokotlinが着実に人気を獲得

Ruby・・・

C#も地味に衰退

2024-11-13

前々から興味はあったけどVST書くの面白そうだね

C++とJUCEとか使えばいいんだよね、楽しそう…😟

2024-11-01

anond:20241101040702

メソッド言われるとJavaC++の方が先に頭に浮かんでしまう…😟

ログイン ユーザー登録
ようこそ ゲスト さん