【IF文つかうな】ついに環境問題がプログラミング現場にも。CO2排出考慮したコーデタング目指す団体
■ このスレッドは過去ログ倉庫に格納されています
マイクロソフトら、CO2削減に寄与するコーディングを目指す業界団体を設立
https://japan.cnet.com/article/35171309/
導入事例、製品情報、調査・レポートなど、ホワイトペーパー多数掲載
Microsoftは、ソフトウェアのコードをクリーンにして、PCやクラウドで電力を浪費しないようにする業界全体の取り組みの一環として、非営利のGreen Software Foundation(グリーンソフトウェア財団)を大手数社と共同で設立した。
Microsoftのほか、Google、Amazon、Apple、Facebookなどクラウドを手がける大手企業は、自社クラウドデータセンターの二酸化炭素(CO2)排出量の削減に取り組んでいる。巨大データセンターの電力消費量を予測するのは簡単だが、アプリケーションの裏で動いているコードや特定のプログラミング言語が、それらを実行するハードウェアのCO2排出量にどの程度影響しているかははっきりしない。
そこで、CO2排出を抑えるアプリケーションの実現を支援しようと、Microsoft、同社が運営するコード共有サイトGitHub、コンサルティング企業のAccentureとThoughtWorks、The Linux Foundationがグリーンソフトウェア財団を設立した。
開発者会議「Microsoft Build 2021」で発表された同財団は、グリーンソフトウェアエンジニアリングという考え方の推進に取り組む。これは、コードの効率性を高めて、コードが実行されるハードウェアから排出されるCO2の量の削減を目指すという新しい分野だ。
同財団は、グリーンソフトウェア開発のための業界標準、ベストプラクティス、パターンを策定することを目指す。具体的には、信頼できるオープンソースおよびオープンデータプロジェクトの組成促進、学術研究の支援、グリーンソフトウェア大使の国際的なコミュニティーの育成などを行う。 for{
if
if
if
else
}
これで大体なんでもできまつ メタプログラミングでできる事は全部コンパイル時にやれ >>10
次の商売だな
環境に配慮した仮想通貨が登場すればそっちに世界中の投資が集中するだろ >>4
大規模データ読み込みで使ったら激怒されそうなコードだな >>16
sqlで絞ったら軽いからいけるって聞いたで Branch がダメなのか ARM で predicate 使えって事なのか >>4
基本 繰り返し、判断、処理だからな
今のスペックだと複雑な処理かますよりシンプルなのでいい場合が多い > 【IF文つかうな】
こういう低レベルというべきなのか高レベルというべきなのかわからないようなお作法の話じゃなくて
キャッシュのミスとかパイプラインのハザードとかをなくしましょうって話なんじゃね? if (hoge == true) {
return true;
} else {
return false;
}
というコードを見た時、頭はげるかと思った。 else if連発でスパゲッティやるなってことか? >>29
ぜってえいらねえけど削るとテストしなおしになるから放置しようってコードは山盛りあるw >>29
hogeがfalseになった時にブレイクさせたいデバッグ用コードとか? でもある程度長くないならベタ書きは可読性最強だよね
IDE使って飛びまくるとか調査大変やん
保守に有利とかいうけど無駄なクラス化多くね? for(i=0;i<neko.length;i++){
if(inu){
for(i=0;i<taberu.length;i++){
// Ajax_sendmail();
}
}
if(i==9999) var i=0;
} gotoさんが再評価されるチャンスは有りませんねはい 今時if無い方がテスト書きやすいし計算コストもかからんからよい
この意味わからないプログラマはモグリ GPUのプログラムは分岐をなるべく減らさないとパフォーマンス出ないな テメーんとこのRoslynでなんとかしろよ無能🤣🤣🤣 スレッドごとにプライベートスタック使うの禁止な
全てstatic globalにしろや if とgoto だけで組んだ方がメモリ効率いいんじゃなかった? 少しくらい冗長なソースコードもコンパイラがなんとかしてくれるでしょ。たぶんだけどな。 >>55
優先度の低いタスクのメインループとか結構あるな。 if flag = true then
else
〜
〜
end if
初めて見たとき逆に画期的だと思ったわ >>1
何人か言ってるとおり、コンパイラでの最適化の問題である
コーディングは明確さとノーバグが最重要
不明確だったりバグったり落ちたりすると
・再処理でCO2
・バグつぶし作業、謝罪、賠償で膨大なCO2
・テスト工数と手戻りで膨大なCO2 マイクロソフトは、まずWindowsのくだらない機能を全て削ぎ落とさなければいけない
それだけで消費電力は1/10になる
特にModern Standbyは害悪でしかない
Intel、AMD,その他のCPU製造者は分岐予測、投機的実行、長大なパイプラインなどの速度向上策を捨てなければならない
それだけで消費電力は1/10になる >>4
デスマーチの基礎だな
マルチタスクだと何処で止まったかもよくわからない いや、同じ動作をさせるなら、処理の軽いコード書くというのはアタリマエのことであって、
そんなことを推進する団体にいちいちエコ利権屋を絡ませるのがヤバいっていう話やん。
ネラーってバカしかいないから話の本質を読み解くことができねーんだなっていつも思うよ。 Windows Updateが一番の環境破壊だろうが Excel演算式とVBAで使ってる人たち アウトー こんなの自動車で1q走ったらイーブンどころか超過するレベルの消費量だろ
F1とかアクロバットとかを規制しろ このスレを終わらせる結論を言ってやろう。
コンパイラでなんとかしろ。
多少コーティング変えてもコンパイラ次第だろ。 >>73
組み込み制御屋だが、今はシビアなハンドラもCで書いてるよ。
パイプラインやらスーパースカラやら分岐予測やらを人間が考えてるより、Cの最適化に任せた方が速いし、何より移植性に優れるため。 >>64
むしろマルチタスクでないコードを書いたことがない
あなた何やってんの? お前らも呼吸をするときは呼気に含まれるCO2がなるべく減るよう意識しながら息を吐けよ? マシン語で書くべきかデバッグに悩むおっさんの消費CO2を減らすためにむしろ高級言語で書くべきか悩むな。悩んでいる間にも排出してるし困る。 初心者によるloop文の多用こそ無限ループ=無駄な電力使用の根源!
loop文の使用は許可制にしろ! 使っていないコアの電源はこまめに切るようにしましょうよ。 使ってないメモリの通電もやめろ
8KBもあれば十分やろ
2次キャッシュ、3次キャッシュとか女々しい使い方もするな 今すぐ捨てろ コンパイラでのオプティマイゼーションが本手なんだけど
そのためにコンパイラが何パスも回してここで CO2 が生じる
コンパイラが1パスでかつコードもそこそこ速い go を使うのが正解 >>93
Cで書いてオプチマイズレベル上げた方が正直効率がいい。>>83どぞ
まだCが動けない段階(電源リセットモジュール)はアセンブラで書くけど、この時は効率を無視し、わかりやすさ重視で書く。
アセンブラモジュールなんて言うただでさえも厄介なコードに自己満的知識を詰め込む必要はない。 それらのサーバーを動かす電気を作ってる発電所ではラダー言語という化石で動いていた
余りにも特殊すぎてJavaやらPythonやら叩いてる子には難しいらしいな >>95
PLC(シーケンサ)はバリバリの現役だよ。
これだけで微分出力ができる。
作るのも10タッチくらいで、即実行できる。
http://www.kinokeiso.co.jp/image/PLCSEQ/DIFU.gif
ソフトで組むのは大変w
何千行も組んだのPLCをズラズラと並べていける。
https://jss1.jp/wp/wp-content/uploads/2020/11/shutterstock_599717405.jpg
古い時代は電気屋がハンダと配線で組んでたけど、いつしか電子化され、現在はネットワークに組み込まれてパソコンから遠隔ダウンロードできるようになり、リアルタイムで動作を監視できるようになってる。 メモリ除去の時にちまちま番地なんか指定して開放してる奴アホだよな
溜まったところで後でまとめてレンジ指定してドカンと一発でガベージコレクトやれよ
夏休みの宿題と同じだよ
8月31日になってから取り掛かると初めから決めとけは後は遊んでられる コンパイラの最適化もバブルソートをクイックソートに置き換えたりしないからな。
そこらは人間様にガンバってもらうしかないな。 str1 + str2 + str3みたいな文字列の連結だけをとってみても、現代の主要言語では何度もメモリ確保とコピーを繰り返す馬鹿みたいなことが起きるからな >>96
PLCは現役だけどラダー言語は日本でしか生き残ってないぞ
海外はほぼファンクションブロック
シーケンス制御やインターロックはラダーは優先順位がはっきりしてて優れてるが
複雑な配列やフィードバック制御はしんどい
ハンダ配線してるのは電気屋じゃなくて基板屋かなぁ i=1
do while i>1
msgbox("ハゲwww")
loop
i=0
end >>100
最近のJITはそんなの最適にやってくれるよ
Javaでstring連結するな!とか言ってるのおじさんだけよ マシンパワーにすべてを任せた演算が許されなくなるの?
節約すると計算めんどいしバグとかまた生まれる コードは可読性と保守性をとにかく重視しろ
慣れた頃に作ったなんかカッコイイ感じのコードが黒歴史になってる 'どうしても数字が合わないのでここで帳尻合わせしておく。
a=a+0.03 実行効率悪いからスクリプト系とかインタプリタ系も禁止だよね >>14
分岐予測によるキャッシュミス等が発生するから限界がある ループの展開 除算の削減
これくらいみんなやってるだろ >>105
Rubyの作者が、人間に分かり易ければ、速度や効率なんか多少落ちてもいいんです〜
とか言ってたけどアウトだなw 同じフィールドの値ごとに処理を分ける時にわざわざif文でやるなってのならわかる。 >>111
ケースによるけど、削減できるタイプの割り算は最適化されないかね?
コンパイラさんがシフトを駆使するイメージ。 >>101
日本が化石って言えばそうなのかもしれんけど、最前線でも(ファンクションブロックと適材適所で)普通に使ってるw 暗号化キーの複合にかかる消費電力のモニタリングから暗号アルゴリズムの
推測と解読を行うという手法は驚愕した。 >>101
古い時代のシーケンサは基盤屋と言うより電気屋なイメージ。
ウチの爺様がそんな人で、製紙工場の電設部勤務だったようだ。 >>118
PLCが電気屋は合ってるけど、電気屋はリレーシーケンス回路をPLCのラダーに置き換えてて
基板屋はリレーシーケンス回路をハンダ使ってトランジスタやマイコン実装して置き換えてた
電気屋はあんまハンダ使わない
あとDCSとやりとりする上でも可読性と互換性の良いFB D使うので、最先端であればあるほどラダーは消えるよ
つーか海外PLCはラダーにバグ多かったり通信でFBD要求するので使う必要がない
もはやガラパゴス言語だよ
まあそれが参入障害になってて市場が守られてるみたいだが >>100, >>104
最適化で省エネのネタを見つけたね
良かったじゃん >>1の文中にも何度もでてくるが
Microsoft
という社名を短くすると世界中のコンピュータのリソースの節約になる
というのがマシンが非力だった昔は真顔で語られていたのがどうなったんだろう >>119
そこらは言葉の定義じやわないかね?
爺様の仕事を見た事があるけど、基盤じゃなく、デカイ板にタイマーとかリレーを並べて、それを配線してくような作業をしてた。(ラダーを物理で組む感じ)
親父さんになると、PLCをキーボードで入力するタイプの電気屋に変わってる。回路設計だね。
で、俺は回路屋から組み込み制御(車載制御なので継いでるワケじゃない)。 >>121
それはウチの親父さんがやってるw
爺様と同じ製紙工場の電設部w >>31
コード削ってテストして問題なく動いても他のところで不具合出るかもしれないからな
自分で書いたコードをあとで見直すと「あれ?なんでこんなコードいれたんだっけ?」ってのあるがちゃんと意味あったりするし >>29
if (hoge !=false) {
じゃ無いと気持ち悪い javascriptやってる奴ってif文嫌うよな
三項演算子、&&とか駆使して無理やり1行にまとめようとするし、読みにくい >>125
それはいわゆる電気屋のリレーシーケンス回路とかハード回路と言われてるもの
電線の繋ぎは端子仕上げしたものをビス止めするので、はんだは使わないよ
ビス止めは嵩張るけど不具合や増設あったときに現場で改造しやすいんだよ >>121
俺の業界だとCODESYSはまだまだ流行らんと思うわ
というか既存の国産PLCの仕上がりっぷりが凄いので変える必要が無いというか コードの構文どうこうじゃなくて、消費電力食うような処理させるなって話じゃないの?
電池で動くような携帯とか組込み系の技術者なら普段から意識してるけど、PCのアプリとか作ってる人は意識してないから あるインフラを開発していた人が、先輩から引き継いだプログラムが複雑すぎて
手が付けられなかったという話を聞いたことがある
コードの量が多いというのではなく、全く逆でどうやってこんな少ないコードで動
くのかついに理解できなかったという話だった
大昔のことで、限られたリソースに詰め込むために考え抜かれたプログラムだった
そうだ
動的に自分で自分を書き換えていたらしい >>136
アセンブラ全盛期は自己書き換えとかジャンプテーブル書き換えたりとか普通にしてたな >>119
単純な構造のラダーにバグがあって使えないからFBDって、そんな理由あるか?
そんなんただの欠陥品だろ >>138
使ったのはシーメンスとシュナイダーとABロックウェルだけど、どれもラダーで扱う通信絡みでバグ多かったな
イニシャライズ処理も貧弱で再立ち上げで謎エラー出すしな
国産はその辺良いけどFBDがイマイチ
特に最大手のM菱のFBDはサポートが使わないほうがいいっていうくらい酷かった 間違った予約番号で通してたシステムはエコだったんだな >>29
コーディング規約がカスだとそういうコードを書く事がある
そうしないと通らないんだよ >>140
嫌味じゃなくて、そう言ってる人もいる
役所の窓口の整理券発行機みたいなものだから
「“予約システム”としてはこれで良かったと思うし、英断だ。むしろメディアがITに疎すぎる」大規模接種センターをめぐる報道に夏野剛氏
https://times.abema.tv/news-article/8659035 >>139
通信周りは今はだいたいユニットで簡単に出来ちゃうからなあ
自前でメッセージを処理するにしてもそんなに手間かからないし
三菱のSFCはなんちゃってだから使わないほうが良いと言われたことはある
FBDはプロセスCPU以外では一回しか見たことないけど、大体みんな保守が困ってた 世界中のビジネスPCのリソース無駄遣いしてるMSがねえ 条件分岐はよくないってPentium4の頃から言われてただろ >>136
>>137
組み込み制御やると、そーゆーのに憧れて1度はチャレンジするんだが、レビューで「試験仕様書はどう書くんだ?」「市場報が出たら例えハード故障でもソフトバグだって言ってくるぞ」「メンテ考えてる?」「全部お前にくるぞ」なんて感じでフルボッコになって二度とやらなくなるw >>29
中に処理追加するつもりかもしれんやろ
とか言いたかったが
==いらんわなw ポリモルフィズムと言う名の隠れた条件分岐でエセエココーディング >>34
普通はそうするけど、デバッガでブレーク設定する時に不便だって話はある。>>33 >>146
もっと古くてベーマガの頃からDr.Dに怒られてた。
計算して代入で済む場合とかね。 マジックナンバー使うのはアホ。
データ部分はすべて外出しで無コンパイルで変えれなきゃダメ。
アホなクライアントほどここはこの数字で!変えれなくていい!固定だ!なんてほざいて、法規制が変わると手のひら返す。 >>155
実際に物を動かすハードを扱ってると
変えれらるようにすると安全基準を守らないように変えて事故るやつがいるから
そういう要求が出るものなんだよ よく知らないけど、ifとgo to組み合わせてくそ長いソースにして、グローバル変数使えば良いんだろ? >>156
組み込み制御だけど、社内コーティング規約でマジックナンバーは禁止になってる。
規制しないと謎な数値満載のコードを書く奴がいるのはどこの世界も同じ。
ただ、同じ数値なのにSMOKE_LIMITだったりSMKLMTだったりMAXSMKだったりはやめて欲しいw
(マジックナンバーじゃなきゃ安心と言う訳でもなさそうだ) >>157
似た関数はコピって、違うとこだけ変えれば更に安心。 >>156
予定外の値が与えられた時に
きちんとエラー処理させられる、腕の見せ所だろ ■ このスレッドは過去ログ倉庫に格納されています