tamam araştırıyorum saolun
peki anladığım kadarıyla heap değişebilen değişkenler
stack değişmeyen kalıcı değişkenler peki python ile stack kullanılabilir mi?
Bilemiyorum, belki ctypes aracılığı ile kullanılabilir ama böyle bir şeyin mümkün olduğu ile ilgili bir kaynak bulamadım, tabii o hafızayı alanını Python’da kullanmamızı sağlayan değişken yine heap’da olacak. Tabii bir C fonksiyonu ile bunu bir süreliğine kolayca yapabiliriz.
Asıl soruya cevap olarak yazıyorum.
DNA=lambda s:"".join("TCG A"[ord(c)%5]for c in s)
49 karakter.
Burayı da iyice code golfe çevirdik 
ord fonksiyonu ne işe yarıyor ve neden 5 ile kalanını hesapladık
ord fonksiyonu verilen harfin sayı numarasını veriyor. Hepsinin numarası farklı. 5 ile kalanını hesaplama sebemimiz ise "ATGC" harflerinin her birinin 5 ile bölümündeki kalanın farklı olması, tevafuk da diyebilirsiniz.
Hehe, evet, ama orijinal soru oydu:
LUT’unun hastasi oldum ![]()
Benim de hoşuma gitti, ama pek de orijinal olduğunu söyleyemem
Buradan esinlendim: code golf - DNA to RNA Transcription - Code Golf Stack Exchange
Lut nedemek ? Açıklar mısınız
Lookup Table. Program çalışırken belli bir sonucu elde etmek için uzunca işlemler yapmak yerine bilgilerin daha önceden bulunduğu bir listeyi indexlemek olarak özetleyebiliriz sanırım.
Ahh 
Bu arada sayi uzerinden gidip ord yapinca 1-2 karakter daha kazaniliyo ama kisa bir formul bulamadim:
chr(4+((ord(x)*725)^55)%93))
(Bu formulu de clipboard history’den aldim, 3 gunluk, yanlis olabilir.)
Aslinda belirli bir karakter uzunlugunun altindaki butun expression’lari deneyen kod yazmak lazim 
yanlış öğrenmiştim sonrasından tamamladığımı düşünüyorum eksiklerimi hatta öğrendiklerimi bir yazı da topladım: (NOt: yazı da stack segment, heap segment demişim kafa karışıklığından oldu stack ve heap segment değil, segmentler program başlatıldığında programdan parse edilip istenilen bölgeye alınıyor)
x86 mimarisinde memory segment’lere ayriliyor. “Stack segment” lafi oradan geliyor; SS register’iyla belirtilen ve push/pop instruction’larinin kullandigi segment o.
Executable segmentleri de benzer mantikta fakat biraz daha farkli. Isletim sistemi okuyup isletiyor. Mesela bss segment tanimi sadece bir uzunluktan ibaret, cunku iceriginin 0 oldugunu herkes biliyor. Program calistirilana, hatta buraya bir sey yazmaya calisana kadar hafiza ayrilmak zorunda degil.
data (executable) segment’i icin yazdiklarin dogru, fakat onemli olanin degiskenlerin qualifier’lari degil, omurleri oldugunu vurgulamak isteyebilirsin. Programin omru boyunca yasayacak degiskenler icin, mesela.
Heap daha cok bir konsept, “segment” der miyim bilmiyorum. x86 mimarisinde tekabul ettigi segment Data Segment (akillar yeterince karisti mi? :D) Segment olarak stack segment ile ayni semantige sahip, buyumemesinin tek nedeni isletim sistemi tarafindan kisitlanmis olmasi.
Konsept olarak malloc’un/new’in kullandigi yer. Kullaniminin zorlugu bunlarin kullaniminin zorlugundan geliyor. Bu maliyeti biri bir kere guzel constructor/destructor’lar yazarak verdiyse sinifi kullananin heap/stack gibi detaylardan haberdar olmasina gerek yok.
Call stack programin stack segment’inde kullandigi, anlik degisen alan. Stack frame/call frame bunun icinde tek fonksiyon cagrisina denk gelen parca.
Fonksiyonun parametreleri, hatta yerel degiskenleri bile stack frame’de olmak zorunda degil ama orada gorursem sasirmam.
Segment registerleriyle karıştırmışım
evet belirtmiştim yazımda da ^^
daha iyi bir yöntem varmış diyorlar pagging mi ne…
@aib hocam bide kafamın karıştığı bir yer daha var ELF, PE, COFF formatlarının farkları hakkında bu segmentler (Code, data, bss) hepsinde varmış genel bir konsept oldukları için ama sectionlar (.rodata gibi dediler) farklıymış sadece fark bu mu? ayrıca section ve segment farkı nedir?
kullanılan işletim sisteminin API leri farklı bide bu olabilir mi?
yok hocam aklım zaten karışmıştı segment registerleriyle executable/object dosyalarındaki segmentler ile :D.
Normalde islemcinin kullandiklari segment, executable’lardakiler section. Sen “segment” dedin diye ben de segment dedim ikincilere.
Yok, segment register’larindan bahis yok sende. x86 mimarisiyle ilgili hic detay yok. Olmasin da zaten.
bu yüzden binary’de bu segment için sadece boyutunun ne kadar olduğu gereklidir.
Burada “binary” dedigin executable ise dogru.
daha iyi bir yöntem varmış diyorlar pagging mi ne…
Paging. Isletim sistemi ve islemcinin elele calistigi bir memory management yontemi. Segment’lere bir alternatif degil, o yuzden daha iyi olmasi soz konusu degil. (Sadece segment’ler kullanilarak yapilan memory management’tan iyi diyebiliriz ama.)
@aib hocam bide kafamın karıştığı bir yer daha var ELF, PE, COFF formatlarının farkları hakkında bu segmentler (Code, data, bss) hepsinde varmış genel bir konsept oldukları için ama sectionlar (.rodata gibi dediler) farklıymış sadece fark bu mu?
Direk uc formati da okuyup cevaplayabilecegin bir soru bu.
Dogru terminolojiyle gidiyorsak hepsi (sanirim) section. Segment yok, x86 memory segment’leriyle yakindan-uzaktan alaka yok.
kullanılan işletim sisteminin API leri farklı bide bu olabilir mi?
bu da fark yaratiyor tabi ki dosyalarda
(Sadece segment’ler kullanilarak yapilan memory management’tan iyi diyebiliriz ama.)
bundan bahsediyorum ![]()
Normalde islemcinin kullandiklari segment, executable’lardakiler section. Sen “segment” dedin diye ben de segment dedim ikincilere.
assembly de section yerine segment yazınca da oluyormuş ondan dedim
Direk uc formati da okuyup cevaplayabilecegin bir soru bu.
Dogru terminolojiyle gidiyorsak hepsi (sanirim) section. Segment yok, x86 memory segment’leriyle yakindan-uzaktan alaka yok.
@aib hocam kafa karışıklığım var şimdi bss,data,code bunlar genel konseptler o yüzden executable formatlarda kuıllanılıyor genel olarak peki başka farklar var mı? veya assembly ile yazılmış programda bu formatlar arasında ne tür program yapısı farkları olabilir?
ayrıca assembly de segment keywordu ile .code, .data , .bss tanımlayabiliyorlar peki kişi kendisi de segment tanımlayabilir mi?
sizin gibi assembly ile ilgilenmiş birisi sorularımı saçma buluyor olabilir kusuruma bakmayın ![]()
sorularımın yanında ek bilgi vermek isterseniz çok minnettar olurum ![]()