タグ

cに関するkoma_gのブックマーク (24)

  • PythonのctypesでDLLの関数から様々な戻り値を受け取る その2(参照渡し) - MRが楽しい

    日は Python技術調査枠です。 Python の ctypes で DLL の関数から様々な戻り値を受け取る方法について記事にします。 今回は参照渡しを利用して、値を受け取ってみます。 前回記事の続きです。 bluebirdofoz.hatenablog.com 参照渡しを利用する 関数で参照渡しを利用して、Python スクリプトに値を受け取る例を試してみます。 最初に int 型の参照を受け取って値を代入する関数を用意します。 前回のプロジェクトを修正し、DLL に int* 型を受け取る関数を追加します。 ・TestLib.h #pragma once #ifdef TESTLIB_EXPORTS #define TESTLIB_API extern "C" __declspec(dllexport) #else #define TESTLIB_API extern "C"

    PythonのctypesでDLLの関数から様々な戻り値を受け取る その2(参照渡し) - MRが楽しい
  • Cで作った関数をpythonで呼ぶ - Qiita

    3行で 普段はpythonを使うが、やむにやまれぬ事情でC言語で書かれたリソースを使う必要はまま生じる pythonはCを使って新たなモジュールを追加することができるので、その機能を使えばいい Python.hに用意された特別な構造体を使ってCでモジュール名、メソッド、引数を定義し、distutils.core.setup(pythonのメソッド!!)を使ってビルドする 必要な作業 C言語で書かれたソースコードのベースを用意 C言語でラッパーを記述 pythonでsetupスクリプトを記述 setupスクリプトを実行 細かいことはいいから答えを教えろ ソースコードと使い方だけ書いて下記のリポジトリにアップロードしときました。 https://github.com/nagiton/c-python-api 目標 自作のモジュールhelloをC言語で作成し、下記のような出力を実現する。 sh-

    Cで作った関数をpythonで呼ぶ - Qiita
  • ブライアン・カーニハン、UnixとC言語について語るインタビュー - YAMDAS現更新履歴

    An Interview with Brian Kernighan on C and The C Programming Language | | InformIT C 言語のバイブル『K&R』の著者の片割れブライアン・カーニハンに Unix と C 言語について聞くインタビューなのだが、最初のやりとりだけで涙でモニターがにじむ。 ジョン・ウェイト:その後生まれた人気言語の多くが、C をルーツとしています。Unix は、その後生まれた多くのオペレーティングシステムに直接、間接に影響を与えました。C と Unix の長寿と人気は何に起因するとお考えですか? ブライアン・カーニハン:C も Unix も、表現力、効率性、そして手法の合理性をとてもうまく両立させている。つまり、土台とするに優れた足場ということだ。優れたアイデアは盗む価値があるし、効率性は比較基準になる。また大きな変更をするより、

    ブライアン・カーニハン、UnixとC言語について語るインタビュー - YAMDAS現更新履歴
  • 【Python C API入門】C/C++で拡張モジュール作ってPythonから呼ぶ -前編-|はやぶさの技術ノート

    こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。 仕事の都合もあり「C言語 ⇒ C++Python」の順にプログラミング言語を習得しました。 最近は、PythonとC/C++両方を使って仕事をしています。 Pythonでプログラミングをしていると…

    【Python C API入門】C/C++で拡張モジュール作ってPythonから呼ぶ -前編-|はやぶさの技術ノート
  • PythonからC言語の関数を呼び出してユニットテストする環境を作る: Cython編 - EurekaMoments

    Cython ―Cとの融合によるPythonの高速化 作者:Kurt W. SmithオライリージャパンAmazon 目次 目次 はじめに Cythonとは PythonとC言語を組み合わせるメリット 参考記事 ステップ1: C言語のコードを書く ステップ2: C言語のコードをラッピングするCythonコードを書く ステップ3: Cythonコードをビルドするsetup.pyを書く ステップ4: コンパイル・ビルドする ビルドする際のハマりポイント ステップ5: ユニットテストのPythonコードを書く 今後の課題 はじめに 自分は普段の仕事でC言語のプログラムを実装するのがメインです。しかしながら、今の職場にて自分が実装したC言語のソフトをデバッグするためには、実際のコントローラに書き込んでからベンチシミュレータで動かす、くらいしか方法がありません。 いちいちコントローラに書き込んだりす

    PythonからC言語の関数を呼び出してユニットテストする環境を作る: Cython編 - EurekaMoments
  • 3(0)日でできる! Cコンパイラ自作入門 - Google スライド

    3(0)日でできる! Cコンパイラ自作入門 2018-11-09 hikalium @ コンパイラ勉強会

    3(0)日でできる! Cコンパイラ自作入門 - Google スライド
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • バカにC言語は難しい~プログラミングの機会損失~

    プログラミングは難しい 注意: この記事は「プログラミング学習とはかくあるべき」、「こうやって学習するのが一番」ということを言いたいのではなく、プログラムを勉強したいが右も左もわからない人に少しでも勇気と情報を与えることを目的としています。過去の挫折経験からか、なかば愚痴っぽくなっていますがご勘弁を はじめに自分のプログラミング歴を軽く紹介して起きます。 年 言語 学習目的 2010 C言語 学校の実習 2011 C++ 組み込み系 2012~2017 None None 2018 Go,Js,Scala,Python 研究、Web開発 といった感じです。2012~2017年がNoneになっているのには原因が「C言語に挫折し、とにかくプログラミングがしたくなかった」からです。そう思ってしまった原因と、そこから立ち直ったことがこの記事を書いた理由です。 「おいおい、C言語ごときで挫折とは情け

    バカにC言語は難しい~プログラミングの機会損失~
    koma_g
    koma_g 2018/10/23
  • Cコンパイラ制作の夏期集中コースが思っていた以上にうまくいった話|Rui Ueyama

    2018年の夏に僕はセキュリティキャンプ(以下「セキュキャン」)というイベントでCコンパイラ作成コースの授業を行いました。授業はとてもうまくいったといってよいと思います。参加者は6人だったのですが、6人全員プログラミング技術がかなり飛躍的に向上したようですし、そのうち3人は期間中にセルフホスト(自分の書いているコンパイラで自分のコンパイラ自身をコンパイルできること)まで漕ぎ着けることができました。 この文章では、その授業をどのように僕が教えたのかということと、生徒にできるだけ多くのことを学んでもらって自信をつけてもらうために僕が何を気をつけていたのかという2つの点について説明します。 セキュキャンとはセキュキャンは5日間の合宿イベントで、学生を対象としてコンピュータセキュリティやプログラミングについて教えるというものです。いくつものコースが用意されているのですが、僕が受け持ったのは「集中コ

    Cコンパイラ制作の夏期集中コースが思っていた以上にうまくいった話|Rui Ueyama
  • Pythonを高速化するCythonを使ってみた - Kesinの知見置き場

    突然ですが私はPythonが好きです。でもPythonは遅いです。 何が遅いかというと、致命的なことに四則演算が遅いです。でも他の動的型付け言語でスクリプト言語と呼ばれるPerl, Ruby, Javascript も C, Javaのようなコンパイルを行う静的型付け言語に比べれば圧倒的に遅いです(近年ではJavascriptのように著しく進歩した言語もあるので必ずしもそうだとは言えませんが)。 スクリプト言語が遅い原因の一つは、変数の型が指定されていないので型のチェックを毎回行う必要があるからです。この特性があるおかげ自動的に型を変換してオーバーフローを防いでくれるというメリットもあるのですが、どうしても静的型付け言語よりは速度を出すことができません。 ならPythonのコードに型指定を加えてコンパイルしちゃえばいいじゃん!というのがCythonです。正確にはPythonライクな文法で書

    Pythonを高速化するCythonを使ってみた - Kesinの知見置き場
  • 例え話をしないC言語のポインタの説明 | 右や左の旦那様

    まえおき 巷では「プログラマーになりたい人に初学者にとって、ポインタという考え方がわけわかめ」という話がよくあります。 そこでいろいろな人が「ポインタは住所だ」とか「変数がハコで」とか手を変え品を変え分かりやすいように説明してくれています。 それでもなお「ポインタがわかりづらい」という人が後を絶ちません。 もういっそのこと、例え話をやめてド直球で攻めたらいいんじゃないでしょうか。 Hello, Worldより簡単に サンプルコード 以下のコードを考えます。 void main() { int a; int b; int c; a = 1; b = 2; c = a + b; } 「#include <stdio.h>」なんていう謎のオマジナイはこの際ナシです。あんなもの無くたってC言語は成り立ちます。 まぁ見ての通り、どこにも何も出力されませんが。 このプログラムは、「c = a + b」

    例え話をしないC言語のポインタの説明 | 右や左の旦那様
  • ctypes拡張モジュール

    makoto shing (stability ai) - image model fine-tuning - wandb_event_230525.pdfAkira Shibata

    ctypes拡張モジュール
  • Boost.Python の機能をざっと紹介してみる - moriyoshiの日記

    Boost の一部ながらも「実用的」すぎるため、とかくテンプレートメタプログラミングを愛好する諸兄から黙殺されてきた不幸のライブラリ、Boost.Python。Boost.勉強会でこいつの魅力を伝えようと思ったのだけど、時間の都合で無理だったので、簡単に紹介してみたい。 Boost.Python の基礎 Boost.PythonC++ のクラスや関数をラップする Python モジュールを恐ろしく簡単に書けるようにする、強力なライブラリである。 特に、Pyrex や Cython と比べて何がうれしいのかというと、 Python側にいちいちラッパ関数を書かなくてよい (テンプレートにより自動的に定義される) コンバータを登録することで、PythonC++の型の透過的な変換が容易にできる C++ のクラスを分かりやすい形で Python のクラスとして見せることが可能 といった点が挙

    Boost.Python の機能をざっと紹介してみる - moriyoshiの日記
  • c/c++をラップしてpythonで使えるように - Python | Welcome to underground

    c/c++ wrapper for python c/c++の遺産をpythonでも使いたい! そんなあなたに朗報! 今お使いのものがpythonでもe使えますよ! しかも無料ですよ! 参考にすべきリンク先 PythonからCプログラムを呼び出す | 象歩 PythonからMinGWで作ったCの関数を呼んでみる | BTY備忘録 SWIGでPythonラッパを書いてみる - 睡眠不足?! SWIG and Pythono Boost.Python - Boost 1.49.0 boost.python - Pythoninfo Wiki Boost.Python の機能をざっと紹介してみる 1,2はPython.hを使った伝統的な方法. 3,4はSwigを使ってユーザーが楽する方法. 5はc++もライブラリBoostの中のPythonを使ってかなり効率的に作る方法. 6もboost.pyt

  • 1. Extending Python with C or C++

    1. Extending Python with C or C++It is quite easy to add new built-in modules to Python, if you know how to program in C. Such extension modules can do two things that can’t be done directly in Python: they can implement new built-in object types, and they can call C library functions and system calls. To support extensions, the Python API (Application Programmers Interface) defines a set of fun

    1. Extending Python with C or C++
  • PythonからCプログラムを呼び出す | 象歩

    PythonからCプログラムを呼び出す [更新日: 2022年03月19日 ] Python でプログラミングしていると、 新しいデータ構造を作り上げる場合などに、 C/C++ の力を借りたくなることがあります。 Python から C/C++ コードを呼び出す方法を書きます。 まずは、Cから... 1.ソースコード 次の関数を題材にします。 // hello.c int add(int x, int y) { return x + y; } void out(const char* adrs, const char* name) { printf("こんにちは、私は %s の %s です。\n", adrs, name); } 2.wrapper コード まずモジュール(ライブラリ)名を決めます。 ここでは "hello" とします。 そしてラッパモジュールを書きます。 // hello

  • この10年間のプログラミングの変化|山本一成🚗TURING

    はじめましてnoteの皆さん、名人を倒した将棋プログラムPonanzaというものを作っていた山一成と言います。この度ははてなから引っ越してきました。2018年になったので新しくブログ書いてみようかなぁ〜ってはじめました。 私がプログラミングをはじめたのは大学生だった時ちょうど10年前でした。そして今2018年になって、同じプログラミングにしても色々変わったなぁという印象です。今日はそのへんを皆さんと共有できたらなぁ〜と書きました。 あくまで私の観測範囲内での話をすればですけど、10年前のプログラミングの世界は速く動くことがかっこよかったです。実際にかっこいいだけでなく、必要とされる場面も多かったような気がします。私が愛用しているプログラミング言語はC++(シープラスプラス)と言って、まあそれは高速に動作することだけを意識して作られた言語でした。 加えて、今から考えれば一体なんでそんなトリ

    この10年間のプログラミングの変化|山本一成🚗TURING
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
    koma_g
    koma_g 2016/02/22
  • IPA セキュア・プログラミング講座:C/C++言語編

    IPA 独立行政法人 情報処理推進機構 セキュリティセンターによるセキュア・プログラミング講座:Webアプリケーション編

  • C/C は永久に不滅です!----目次:ITpro

    皆さん,お待たせしました! “プログラミング言語の王道”C/C++言語の特集です。「Visual Basicでプログラミングを始めたけど,いつかはC/C++をマスターしたいと思っていた」「以前にCを勉強したことがあるけど,ポインタで挫折しちゃった」「当はVisual C++に興味があるのだけれど,なかなか手が出せなくて…」「言語仕様も大事だけど,コンパイラの仕組みもきちんと教えてやってほしい」──そんな皆さんの思いや期待に応えます。あなたもプログラミングの王道を極めましょう。 Part1 C/C++は永久に不滅です! Part2 C/C++の疑問にまとめてお答え Part3 ゼロから始めるVisual C++ 2005入門 Part4 誰もがつまずくポインタを詳細解説 Part5 ウラから見たコンパイラ~リンカー~ローダーの仕組み Part6 クラス/継承/多態性をサンプルで理解

    C/C は永久に不滅です!----目次:ITpro
    koma_g
    koma_g 2016/01/07