fortran66のブログ

fortran について書きます。

【メモ帳】モダン Fortran 資料

第1回モダンなFortranワークショップ 発表スライド

発表資料のスライドが見られます。動画も後で上がるようです。

site.hpfpc.org

【寝言】学士会報 第968号 その他

学士会報 第九六八号

今号も文系記事はつまらない話ばかりでしたが、『「敵国研究」の原点に戻ったロシア研究』だけは興味あるものでした。

対象物に寄り添うのではなく、どこか白けた突き放した態度をとるのが正しい在り方だと思います。

巻頭の米外交についての寝言は、トランプ・ブッシュの悪口を並べて妙に米民主党内の似非ヨーロッパ人気取りに寄り添った口吻で草生えました。

Boeing Starliner の怪音

若者の製造業離れが著しいアメリカで絶不調のボーイング社開発のトラブル続きの有人宇宙船スターライナーが、怪音を発していたようです。


www.youtube.com

SF なら宇宙指令 M774 みたいな暗号のはずですがw

昔の X-Files の最初の方にウルトラQの「宇宙指令 M774」そっくりの話があった記憶があるのですが、植え付けられた偽の記憶かもしれないですw

「操られる民主主義」

お盆の暑い頃に涼を求めて本屋に入ったけれど、適当に涼んだ後で何も買わずに出るのも申し訳ないと思ってジェイミー・バーレット著「操られる民主主義」という本を買って出ました。原著も訳本も2018年出版の内容的にやや古い本ですが、予想が当たったか外れたか答え合わせしながら読めます。雰囲気としては、共和政ローマから帝政ローマの移行期、パンと見せ物を供するのが支配者の義務になろうとする頃を彷彿させられ、その風潮に警鐘を鳴らしている感じです。あるいはキリスト教国化してゆくローマ帝国末期に、昔風の徳目を良しとして嘆く貴族かw

出版時はまだ生成 AI の勃興前ですが、すでに頭の切れる成功者としてサム・アルトマンも登場しています。ベーシック・インカムを推しているようでしたが、最近同氏がベーシック・インカムは機能しないと実験から結論付けたというニュースが流れてきたのを思い出します。

www.gizmodo.jp

またヴァンス副大統領候補が、シリコンバレーの脳天気な楽観的進歩主義にイラついていた 2017 年のコラムも思い出されます。

2年間、私はシリコンバレーに住んでいて、他の高学歴で完璧な生活を送っているように見える移住者たちに囲まれていました。自分の人生がどんどん良くなると皆が信じている世界に住むのは、状況が悪化していると正当に信じている人々が多くいる世界から来た私にとっては不快でした。そして、この楽観主義がシリコンバレーの多くの人々を、他の地域で直面している現実の苦悩に対して盲目にしているのではないかと疑っていました。そこで、私は故郷であるオハイオに帰ることを決めました。

www.nytimes.com

終末論的なスチーブ・バノンといい、トランプは暗い思想の人間を連れてくるのがやばいw 能天気な楽観物質主義 vs アメリカン・ネオゴシックの戦いか。

【メモ帳】Tiobe 月旦評 2024年 9月号

Fortran 10位 変わらず

C 言語凋落傾向。

www.tiobe.com

chatGPT 謹製 python

import numpy as np
import matplotlib.pyplot as plt

# Rank and ratings data for top 50 programming languages
rank = np.arange(1, 51)
ratings = np.array([
    20.17, 10.75, 9.45, 8.89, 6.08, 3.92, 2.70, 2.35, 1.94, 1.78,
    1.77, 1.47, 1.46, 1.32, 1.20, 1.13, 1.11, 1.10, 1.09, 1.08,
    0.99, 0.92, 0.79, 0.76, 0.72, 0.71, 0.71, 0.64, 0.63, 0.61,
    0.51, 0.49, 0.46, 0.46, 0.45, 0.37, 0.36, 0.34, 0.32, 0.26,
    0.25, 0.22, 0.20, 0.20, 0.17, 0.17, 0.17, 0.16, 0.15, 0.15
])

# Updated language names for each rank from TIOBE index
languages = [
    'Python', 'C++', 'Java', 'C', 'C#', 'JavaScript', 'Visual Basic', 'Go', 'SQL', 'Fortran',
    'Delphi/Object Pascal', 'MATLAB', 'PHP', 'Rust', 'R', 'Ruby', 'Scratch', 'Kotlin', 'COBOL', 'Swift',
    'Assembly language', 'Classic Visual Basic', 'SAS', 'Prolog', 'Lisp', 'Ada', 'Perl', 'Haskell', '(Visual) FoxPro', 'Dart',
    'Julia', 'Objective-C', 'Lua', 'Transact-SQL', 'Scala', 'D', 'VBScript', 'ABAP', 'PL/SQL', 'Solidity',
    'TypeScript', 'GAMS', 'PowerShell', 'Awk', 'Elixir', 'F#', 'RPG', 'ML', 'Logo', 'Ladder Logic'
]

# Create a log-log plot
plt.figure(figsize=(14, 8))  # Adjust the figure size for better clarity
plt.loglog(rank, ratings, marker='o', linestyle='-', color='b')

# Set the x-axis to show programming language names
plt.xticks(rank, languages, rotation=90)  # Rotate language names for better readability

# Set plot title and labels
plt.title('TIOBE Index: Programming Language vs Rating (Log-Log Scale)', fontsize=14)
plt.xlabel('Programming Language', fontsize=12)
plt.ylabel('Rating (%)', fontsize=12)

# Enable grid for better visualization
plt.grid(True, which="both", ls="--", linewidth=0.7)

# Adjust layout to prevent overlap
plt.tight_layout()

# Display the plot
plt.show()

【メモ帳】x! / 6! = 7!

x! = 6! * 7!

昼に暑くて死にそうなので YouTube を眺めていたところ、動画一覧に x! / 6! = 7! という問題が出てきました。 これが本当に成り立つなら、素数の 11 が出る 11! より小さいし、6! の中に 5 が入っているので 10 以上でしかありえないなと思って、6・5・4・3・2=5*2・3*3・4*2=10・9・8と脳内で並べ替えてそこで満足して動画は見なかったのですが、涼しくなった夜にあらためて計算してみると、10!=3628800, 6!=720, 7! = 5040, 720*5040=3628800 と確かに 10!= 6!*7! となりました。

階乗なんてこれまで何度も計算していたのに、この発想は自分には無くてメモりたくなりました。

角運動量の合成で選択則的にはアリなのに計算すると 0 になる場合とかに関係していたのではないかとか妄想が広がります。

【メモ帳】Tiobe 月旦評 2024年 8月号

Fortran 10位 

10位圏内維持。

www.tiobe.com

【メモ帳】Windows 上の Fortran で wav file の音を出す

AI 様に書いていただく

AI 様に書いていただいた後、修正を少し加えました。

ソース・プログラム

program DynamicPlaySoundExample
    use, intrinsic :: iso_c_binding
    implicit none

    ! Define the external Windows API functions
    interface
        function LoadLibrary(lpLibFileName) bind(C, name="LoadLibraryA")
            use, intrinsic :: iso_c_binding
            character(kind=c_char, len=1), dimension(*) :: lpLibFileName
            type(c_ptr) :: LoadLibrary
        end function LoadLibrary

        function GetProcAddress(hModule, lpProcName) bind(C, name="GetProcAddress")
            use, intrinsic :: iso_c_binding
            type(c_ptr), value :: hModule
            character(kind=c_char, len=1), dimension(*) :: lpProcName
            type(c_ptr) :: GetProcAddress
        end function GetProcAddress

        subroutine FreeLibrary(hModule) bind(C, name="FreeLibrary")
            use, intrinsic :: iso_c_binding
            type(c_ptr), value :: hModule
        end subroutine FreeLibrary
    end interface

    ! Define the PlaySound function type
    interface
        subroutine PlaySound(lpSound, hModule, dwFlags) bind(C)
            use, intrinsic :: iso_c_binding
            character(kind=c_char, len=1), dimension(*) :: lpSound
            integer(c_int), value :: hModule
            integer(c_int), value :: dwFlags
        end subroutine PlaySound
    end interface

    ! Constants for PlaySound function
    integer, parameter :: SND_FILENAME = 1
    integer, parameter :: SND_ASYNC = 1

    ! Variables for dynamic loading
    type(c_ptr) :: hWinmm, PlaySoundAddr
    procedure(PlaySound), pointer :: PlaySoundPtr

    ! Path to the WAV file
    character(len=:), allocatable :: wavFile
    character(kind=c_char, len=:), allocatable :: libName, funcName, c_wavfile

    ! Initialize variables
    libName = 'winmm.dll' // c_null_char
    funcName = 'PlaySoundA' // c_null_char
    wavFile = "C:\test_audio.wav"  ! Change this path to your WAV file location
    c_wavFile = trim(adjustl(wavFile)) // c_null_char

    ! Load winmm.dll
    hWinmm = LoadLibrary(libName)
    if (.not. c_associated(hWinmm)) then
        print *, 'Failed to load winmm.dll'
        error stop 
    end if

    ! Get the address of PlaySound function
    PlaySoundAddr = GetProcAddress(hWinmm, funcName)
    if (.not. c_associated(PlaySoundAddr)) then
        print *, 'Failed to get address of PlaySoundA'
        call FreeLibrary(hWinmm)
        error stop 
    end if
    call c_f_pointer(PlaySoundAddr, PlaySoundPtr)

    ! Call PlaySound function to play the WAV file
    call PlaySoundPtr(c_wavFile, 0, SND_FILENAME + SND_ASYNC)

    ! Free the library
    call FreeLibrary(hWinmm)

end program DynamicPlaySoundExample

【寝言】さそり座

さそり座&国際宇宙ステーション

ちょっと前に夕涼みをしていた時に、ちょうど国際宇宙ステーションが見えたのでさそり座の近くに来たところで写真を撮りました。手すりに載っけた iphone 13 mini 3秒撮影ですw 宇宙ステーションの日本の実験棟にちなんだ「きぼうを見よう」のサイトで宇宙ステーションの見える日時がわかります。

lookup.kibo.space

肉眼では街の明かりでモヤっていてよく見えませんでしたが、写真ではさそり座全体が写っていて、しかもアンタレスが妙に赤くなっていて iphone が勝手に色付けしたのではと疑ってしまいます。(なお画質調整で全体暗くしました。)さそり座は写真下部に位置しています。宇宙ステーションは、真ん中あたりの潰れた明るい奴です。−2 等くらいあるのではないかと思います。

ja.m.wikipedia.org