「ポインタ」を含む日記 RSS

はてなキーワード: ポインタとは

2020-07-11

左辺だと配列だけど右辺だとポインタになるアイツみたいな存在だと思っておこう

2020-07-09

なんとなくフェードアウトしつつプログラムをやめた話

高校の頃N88BASICでアルカノイド風のテニスゲーを作る。

顧問先生から褒められるが、授業中にコードを書いていて本を取り上げられる。

おとなになって資格を考え、Cにチャレンジしようと思ってソフトバンク社の教本を買うが、ポインタで躓いて挫折

スタジオってHなんですね、という穿った知識が身につく。

次にSharpDevelopというありえなくらいマイナー言語で遊んでみるが、Swing的なウィンドウアプリ簡単に作れるねえ……という感慨を得て何故かやる気がみるみる失せてやめる。

次に手を出したのはJavascriptAjaxアヤックスではない)全盛の頃だったので、なんとなく。

JSファイル名書き換えスクリプトを組んでやる気が無くなって終わる。

その後UWSC適当スクリプトを組んで実用するが、大していじってない。

2020-07-08

anond:20200707214248

1年間独学でプログラミング勉強した実感

大学卒業後4年ほど会社員をやったあと、ウェブ関係プログラマを目指して1年ほど、バイトしながら独学で勉強しています

ネット上には詐欺師まがいの情報商材屋とイキリマウントゴリラ跋扈し、普通人間向けの情報が少なかったので、参考までに書いてみます

なお、ここ数年のウェブエンジニア転職ブームとは無関係転職を考えていたので、ブームは正直迷惑だと思っています

1) お金時間に余裕があるなら、大学専門学校プログラミングスクールに行ったほうがいいです。

独学にはいくつかの大きな問題点がありますが、もっとも大きいのは「全体のロードマップ存在しない」ことだと思います

学者は具体的に何をどの順番で学べばいいのかわかりませんし、この情報ネット上にはありません(冒頭にも書いた通り、そう思ったからこそ、このエントリを書いています)。

個人的に参考になったものとしては、

などありますが、どちらも普通人間向けというには若干ゴリラ臭と商材屋臭がします。

また、プログラミング初心者向けの教材はおしなべて貧弱で、腹が立つほど不親切です。読んでいて何度もブチ切れそうになります

特に学者場合は、教材の練習問題ひとつ解くにしても、誤字脱字等の初歩的なエラーのために平気で数時間のロスが発生したりします。

当たり前ですが、これは純粋時間無駄なので、すぐに講師相談して解決したほうがいいです。

こういうことを書くとすぐに「自力問題解決できない人間プログラマに向いていない」と言いだすゴリラが現れますが、いまはそういう話はしていません。

そのほか独学だと自分の実力や相場感を測ることもむずかしく、その分詐欺師ゴリラに引っかかりやすくなりますし、基本的おすすめしません。

2) 独学の最初の1歩は「苦しんで覚えるC言語https://9cguide.appspot.com/おすすめです。

いまさらC言語と思うかもしれませんが、勉強するうえで重要なことはプログラミングの仕組みを理解することであって、どの言語から始めるかではありません。

その点、上記「苦C」はとても丁寧に文法説明してくれますし、ポインタ説明を通してメモリの仕組みも教えてくれます

ただし、回答例のコードに誤字脱字があって動かない等の発狂ポイントがいくつかあるので、注意が必要です。

勉強のやり方としては、まずはサイトを読みながらスマホC言語アプリポチポチ書いてみるところから始めると気楽でいいと思います

途中で頭が混乱してきたら、再度冒頭からきっちり丸暗記するつもりで勉強するのがおすすめです。プログラミングに暗記は不要だと言うゴリラもいますが、あれは嘘です。

intはintegerだからintなんだとか、そういうことを調べながらやるだけでも解像度が格段に向上すると思います

実際にC言語バリバリ書けるようになる必要はないので、おおよその仕組みを理解してしまえば、最後のほうは流してしまって大丈夫です。

3) オンライン学習サービスは便利ですが、内容が充実しているとは言いがたいです。

検索するとこの手のサービスが一番上に出てきますが、内容は不十分だと思いますかゆいところに手が届かず、使っていて非常にいらいらします。

とはいえ他に代替となるものもないので、サービスを利用しつつ、必要に応じて入門書を読むのがおすすめです。

私が利用したかぎりでは、Progateは教材の内容が薄く、Paizaは無意味オタク臭くて私は苦手でした。N予備校Udemyの評判がいいみたいですが、使ったことがないのでわかりません。

私はウェブ関係プログラマ志望なので、ProgateとPiazaでHTML/CSS/JavaScript/Git/Ruby/Ruby on Rails勉強しました。

最近初心者Railsエンジニア供給過多の印象があり、DjangoやLaravelのほうが就職には役立ちそうな気がしています

余談ですが、無料の教材として有名な「Railsチュートリアルhttps://railstutorial.jp/ は、あえて劣悪な翻訳放置することで、自社のプログラミング講座に顧客誘導するビジネスモデルのように見えるので、内容はともかく個人的にはあまりいい印象を持っていません。

ちなみに私はこの辺で迷走していたため、いろんな言語ちょっとずつかじっています

スッキリわかるJava入門』はオブジェクト指向理解するのに役立ちましたし、『退屈なことはPythonやらせよう』で覚えたスクレイピング求人情報収集にとても役立っています。ほかには『プログラムはなぜ動くのか』も読んでためになりました。

基本的に本を読んで損することはないので、時間の許すかぎりたくさん読んだほうがいいと思います。私はあまり読めていません。

4) ポートフォリオを作るのはとても時間がかかります

Railsチュートリアルを参考にRailsアプリポートフォリオ作りましたが、完成まで半年くらいかかりました。

上述の劣悪な翻訳のせいもありますが、データベース設計を考えたり、UIを工夫してみたりすると、いくらでも時間が吸い取られていきます

知識ゼロから3ヶ月でポートフォリオ作りました! みたいな若手情報商材屋を見かけると、そんなにすごい能力があるなら普通エンジニアだけやってればいいのに、と思います

完成したアプリDockerコンテナ化したうえで、GithubActionsで自動テストを走らせ、AWSサーバーデプロイしていますが、この辺は言語勉強アプリ製作と比べたら全然むずかしくありません。

まともな日本語で書かれたまともな教材が揃っていますし、ネット記事豊富にあります。ここまでの勉強で、エラーメッセージや多少わかりづらい文章を読み解く能力も身についているはずです。

それぞれ1、2週間集中すれば最低限の実装はできると思います。ただしAWSの設定だけは、適当にやると数万円の請求書が届いたりするので注意が必要です(届いた)。

5) ここまでやっても就職はできません。

上記ポートフォリオを公開し、求人に応募していますが、一向に就職できる気配はありません。

就職活動が不得手なせいもある気がしますが、いいかげんバイトにも飽きてきたので就職したいところです。だれか仕事くれよ。

2020-06-27

プログラミングは一生安泰のスキルではない

プログラミングという言葉アフィブロガー御用達になって、SNSプログラマーを名乗るのが憚られる感じの昨今。

プログラミング勉強すればフリーランスで一生困らないみたいなこと書いてあるけど、そんな夢のスキルじゃないよ。

それなりにベテラン()を見てきたけど、結局はマネジメント層になれなければ会社にしがみつくことになる人が多い。

なぜなら概念レベルでの流行というものがあるから

これはvueかReactか、javaRubyかみたいな話じゃなくて、もう少し基本的な部分。

例えば大きいのはオブジェクト指向クラス/インスタンス概念

他には、ガベージコレクタ例外処理マルチスレッドデリゲートラムダ式、非同期処理、バインディングとビューモデルイテレータ、null安全

プログラミングを学んでる人には当たり前かもしれないけど、これらは十数年かけて徐々に当たり前になっていった。

ITバブルブイブイ言わせていたけど、これらをうまく扱えないベテラン結構いる。

固定長メモリポインタとmemsetで全てをまかなってきた層や、静的なモジュールで全部の画面を作ってたVB屋とか。

若いころは勉強すればいいと思うだろうが、理解はできてもそれを流暢に使いこなし適合するのは意外と難しい。

プログラムの中でその人の担当箇所だけいまいち読みにくくて、取り回しの悪いものになってしまう。いわゆるstaticおじさんというやつ。

これはベテランイラストレータシナリオライターが、デッサン構成力はあっても、なんか古臭いものが出来上がってしまうのに似ている。

こうなると若いチームメイトや新しいプロジェクトから敬遠される。

もちろん、COBOL案件が未だにあるように、レガシー資産を利用した仕事で腕を振るえる場所結構ある。

ただそういった環境既存人材企業にがっちり掴まれてることが多く、後から見つけて入り込むのは簡単ではない。

なので今いる場所仕事があるならば、それを失わないようにしがみ付くことになる。会社員であろうと個人事業主であろうと。

立身出世できなければ社畜。結局ほかの会社員と一緒だよ。

2020-06-24

くっそどうでもいいんだけど

 *iと**iではポインタの参照1階分 遅いからやだ ってC++使いが言うのは 普通だろ いいかわるいかはあるし 気持ち問題だが

必要もなければ*iを 可能ならiを使うだろうが まぁ *iとiはよくわからん。だが**iは 明らかに 参照1階分おそそう

2020-06-10

anond:20200609133759

俺のマウスやろうか?

触ってなくてもポインタが微細動するよ

2020-06-01

コンピュータープログラミングの分野でリストといった場合、通常リンクリスト 連結リストのことをさすが 何も言わなかった場合に連結リスト以外の事をさすと教えているスクールがあるということだろうか

連想配列技術を応用した連想リスト(次の要素へのポインタアドレスではなくキー値)というものもあるだろうが、原理は同じだから、教えるとき弊害にはならずハードウェア物理アドレス仮想アドレスを渡すか、アプリ内部のキーを渡すかの差だけで、そこまで違いがあるわけではない。アルゴリズムとしては同じだ。何が弊害になったんだ?

2020-05-28

ダングリンポインタはSEGVするという仕様なのに、なぜstd::move必要なのか?

メモリの不整合は呼び出し側の責任。呼び出し側が明示的に所有権放棄するという仕様に対して

なぜmove(呼び出される側が暗示的にに所有権を取得する)という概念を追加したか?(いまこれにたいする回答を準備中

 

move許可制なので、実装している段階でわかるから

 ↓

2回目の利用(別ライブラリ)だった場合で1回目はエラーで気がつくが、2回目は意図せず呼ばれた場合は?

 

他のライブラリのために、所有権放棄実装したら、第3のライブラリがそれを自由に呼び出せるのは望ましい実装か?

所有権を共有しようとしたら、占有されたでござる。

一緒に使おうね、って広場においておいたら、自宅に持ってかえられて、所有権を主張されたでござる

2020-05-26

プログラミング言語を学ぶってどこまで?

C言語知らんけどポインタ

学者変数関数制御文とポインタをただ渡されてもそれだけじゃ何も作れないよね。

プログラミング言語を学ぶのは何かを作るためだろ?

C言語だったらコンパイラOSを作れたら「学べた」といってもいいッ、とか?

言語によって「学べた」の基準は違うだろうけど。

2020-05-23

anond:20200521175300

10年超のプログラマやってるものだけど自分の成長過程を書いてみよう

  • この後にもいろいろあったが面倒になってきたから省略。しょぼいゲーム会社就職する。
    • JavaScript でなんか色々作る
    • Python でなんか色々作る
    • C# でなんか色々作る
    • はてなを始めたり

2020-05-22

anond:20200522100433

できる人とできない人に分かれる、というのはどうだろうか

変数がわからない人

変数はわかるが関数がわからない人

関数はわかるがオブジェクト指向はわからない人

ジェネリクス関数型、モナドポインタ再帰、非同期処理、などなど、人によってつまづくポイントは違う

anond:20200521225730

プログラミング言語を印象批評している記事に触発されて、自分も印象批評してみようと思う。

JavaScript以外にもブラウザ上でぐりぐりするのにはJava AppletとかFlashとかSilverlightかいろいろあったけれど、結局標準化を成し遂げたHTML5に淘汰されちゃった感じがする。LiveScriptからJavaScript改名されたり、規格を話すときECMA Scriptだったりといろんな別名を持つ。一応、プロトタイプベースオブジェクト指向言語なんだけれど、それを意識してコードを書く人がどれくらいいるかは謎。

Pythonは小さいコードを書くのには楽だけど、これで大きなコードを書くと思わぬ変更で思わぬことが起きるのでつらい。しばらく使うとPythonイヤイヤ病にり患し、goを使うようになるらしいとか、ならないとか。pythonで大規模なコードを万一書こうと思うなら、カバレッジが高いテストを書いてくれと思う。

Javaは初期のころオートボクシング / アンボクシングもなく、ストイックオブジェクト指向言語だった記憶がある。ただ、staticを多用してオブジェクト指向とは程遠いコード簡単に書けるので、Javaで書いているからと言ってオブジェクト指向だと思うのは禁物である

PHPWebネイティブ言語で、初期のころHTTP POST/GETなどで渡された変数がそのままプログラム中に出てくる機能初期化していない変数最初に使うと空文字列あるいは0で初期化するという機能があった。また、文字列数字臨機応変に切り替える機能もあり(今もそうかは知らん)、数字文字比較比較演算子(==)でシームレスにできる。パスワードチェックみたいなコードで===ではなく、==を使っているとPHPを知らないバカ扱いされる。

C#Hello Worldくらいしかいたことないから知らん。monoのような互換環境があるのは知っているけれど、わざわざPC Unix上でmonoを使う気分にはなれなかった。

C++黎明期に使った感じと、C++11以降に使った感じが驚くほど違う言語。今はかゆいところには大抵STLで手が届くし、autoを使えばイテレーション腱鞘炎になることもない。PC Unixにも最初から環境インストールされているか簡単インストールできるので毛嫌いせず使うとよいと思う。

Rubyはぎょっとする変更をよくやるというイメージ。これで書かれたプログラムを長年愛用してきたが、ぎょっとした変更を入れられて動かなくなったのでgoで書き直した。その点ではpythonも3でおいていかれたので嫌い。

CSS...はプログラミング言語なのか?そうか。

TypeScriptは書いたことないから知らない。JavaScriptだと大規模コードを書くとつらいのでTypeScriptを使おうという人がいるのは知っている。大規模なコードを書くとしたら、インタフェースに合った呼び出しかコンパイル時にチェックしてくれるような強く片付けされた言語のほうがよくなってくるというのはわかる。

Cは片付けし、構造化したプログラムを書きやすくしたアセンブラ...というイメージだったんだけど、C99くらいから便利機能がいろいろ入ってそうでもない感じになった印象。昔はCのコードを見たら最適化した後のx86アセンブリが見えていたんだけれど、最近は見えなくなってしまった。子供のころ、本屋で秘伝C言語問答 ポインタ編に出会ったのがこの業界に入るきっかけだったのかもしれない。ほかの言語でいろいろ楽に書けるからカーネルをいじるか、システムコールをたたくかするときくらいしか自分の中では出番がなくなってしまった。

これ以下のランキングのもその気になったら書こうかな。

2020-05-16

なんで増田にいるんだろう

昨日も需要もないC言語勉強しようとして今時ポインタでつまづくちょっとおかしな奴が暴れてたけど

なんで高学歴とか高収入がサラッとやって来て格差をチラッと見せて去っていくはてなに居つくんだろう

いつもブクマカが男は女がってうるさいしその度に学歴年収マウンティングされて発狂してるし

何もいいことないのに

パチンカスみたいに負けるのが癖になってるのかな

2020-05-15

C言語オブジェクト指向ポリモーフィズム的なことをやりたいときに、関数ポインタを用意しておいて、条件によって代入する関数を変えるとか、あるんじゃないの?

anond:20200515174939

あぁいや、元増田ではあるが、

関数ポインタと、関数アドレス表記式を書き間違えたのは事実だ。そこは負けを認めよう。

が、結果論として、

関数ポインタも、関数アドレスも 実質一般論で言う変数とは言い難い、準固定値であるという主張に切り替える

 

特に関数アドレスは固定値である という言い方はそれなりに条件をつければ、多くの賛同を得ると思うが

では、固定値を入れて、それしか入れない変数は 変数か?

いちおう頑張れば、コンパイラなどが固定値に変換できるよな?これ

anond:20200515174759

ようするに、何を指摘されているか?というと

int i;

関数ポインタ f = printfアドレスなど

としたとき

sscanf (i)などとするとして

printf(i)

printf(f)としたときのfにたいして、

iとおなじ変数だと教育していいか?という

関数ポインタ」って初心者向けの説明で言う箱と中身のうちの箱だから、中身は変化する(違うものも入れられる)的な話でしょ?

同じ関数アドレスは、実行中に変化はしないが、関数ポインタには別の関数アドレスを入れることができる

anond:20200515173517

いや、あのさあ……

c言語 関数ポインタ サンプル」で検索して、最初に出てくるページの時点で変更する例が出てくるんだが

https://www.kishiro.com/programming/c/function_pointer.html

anond:20200515173917

たとえば、関数ポインタの値バトルとかで、値の大きいほうが勝つ!というゲームだとした場合

勝敗って毎回変わるか?

anond:20200515173517

関数ポインタprintfアドレス

 

左辺でも右辺でもいいんだが

どうやったら、この値の意味論の値がprintfアドレス以外になるのか?というのと値そのものは変わるが それは変わっているというのか?

anond:20200515173517

関数ポインタはNULLでも不正値でもなんでも入ってる可能性があるぞ?

anond:20200515170639

多分おまえが言いたいのは「関数アドレス」のことだ。

関数ポインタの値はロードされたときに決まるとは限らないし再代入もできるから固定値じゃない。

関数ポインタって、ようするにロードされたときに決まるから、実質固定値(値は毎回わかる)

これの意味がわかっていない、学生が多すぎる とのこと

 

実行のたびに値が毎回変わる固定値(ようするに実行する1回のなかでは同じ値だから固定値としてあつかってよい)

 

なんでこれをしらないやつが、教えてるんだ?

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