Çok yönlü bir programcının bit işlemlerde ne kadar iyi olması gerekir? [kapalı]


34

Son zamanlarda bazı OpenJDK kodlarına göz atıyordum ve bit-wise işlemleriyle ilgili bazı ilginç kod parçaları buldum . StackOverflow hakkında bile bir soru sordum .

Noktayı gösteren başka bir örnek:

 1141       public static int bitCount(int i) {
 1142           // HD, Figure 5-2
 1143           i = i - ((i >>> 1) & 0x55555555);
 1144           i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
 1145           i = (i + (i >>> 4)) & 0x0f0f0f0f;
 1146           i = i + (i >>> 8);
 1147           i = i + (i >>> 16);
 1148           return i & 0x3f;
 1149       }

Bu kod tamsayı sınıfında bulunabilir.

Yardım edemem ama buna baktığımda aptal hissediyorum. Üniversitedeyken bir sınıf veya iki kaçırmak veya bu sadece peki bir şey değil mi olsun ? Basit, akıllıca işlemler yapabilirim (ANDing, ORing, XORing, shift) gibi, ama hadi, biri yukarıdaki gibi bir kodla nasıl ortaya çıkıyor?

Çok yönlü bir programcının bit işlemlerde ne kadar iyi olması gerekir?

Bir yandan not ... Beni endişelendiren, StackOverflow hakkındaki sorumu cevaplayan kişinin birkaç dakika içinde cevaplaması. Bunu yapabilseydi, neden sadece farlardaki geyik gibi baktım?


4
Ne tür bir geliştirme işi yapıyorsunuz (ya da şu anda yapmıyorsanız yapmak istiyorsunuz)? Bunun web geliştirmede yararlı olduğunu görmüyorum, ancak gömülü sistemlerde çok fazla bit işlemi olduğunu gördüm.
Thomas Owens

26
Kullanıcı arayüzü geliştirme veya web geliştirme için birini işe alıyorsam, bit manipülasyonu soracağım bir şey değil çünkü, olasılıklar, asla görmeyecekler. Ancak, ağ protokolleri, yerleşik sistemler ve aygıt sürücüsü ile çalışan birisinin buna aşina olmasını beklerdim.
Thomas Owens

11
>>>Operatör olarak dünyadaki nedir ?
DeadMG


3
// HD, Figure 5-2İlk bakmam gereken şey olurdu. Dosyanın başında yorumlarına göre, HDbir Henry S. Warren, Jr.'s Hacker's Delight.
schnaader

Yanıtlar:


38

Çok yönlü bir geliştirici olarak operatörleri ve bitsel işlemleri anlamanız gerektiğini söyleyebilirim .

Bu yüzden, en azından, biraz düşündükten sonra yukarıdaki kodu çözebilmelisiniz.

Bitsel işlemler oldukça düşük seviyededir, bu nedenle web sitelerinde ve LOB yazılımlarında çalışıyorsanız, bunları fazla kullanmanız mümkün değildir.

Diğer şeyler gibi, onları fazla kullanmazsanız, onlarla konuşmazsınız.

Yani, olmamalı , çok hızlı bir şekilde onu anlamaya edememek birisi dert kod bu tür bir çok ile onlar (muhtemelen) çalışma olarak. Muhtemelen işletim sistemi kodu, sürücü kodu ya da diğer zor bit manipülasyon yazma.


1
+1: Bitsel işlemler herhangi bir geliştirici için önemli bir bilgi bitidir (punto amaçlanmamıştır), ancak şu anda sadece belirli durumlarda gerçekten çok önemlidir. Eğer gün içinde hiçbir zaman onlarınla ​​yüzleşmediysen, o zaman genel bir bilgiye sahip olmak, üstlerine gelmekten daha iyidir. Beyin alanını boş bırakın.
Nicholas Smith

Bunları ne zaman kullanacağınızı ve eldeki sorun için doğru çözüm olup olmadıklarından, kullanımlarından uzak durmayacağınızı da anlamalısınız.
user606723

@ User606723 adlı kullanıcının yorumuna eklemek için - genellikle bitsel sayfaların kullanıldığı ve sık sık karşılaşılan pek az yer var - bunlar sık ​​sık (ve bununla ilgili şeyler) ve eğer varsa belirli RGB renklerini çıkartıyor / ayarlıyor bir içinde saklanır int. Örneğin, CPU bilgisi belirli bir sicilden döndürülen bit bayraklarını kontrol ederek okunabilir, ancak bu asm içerir ve gerekirse daha yüksek lvl sarmalayıcıları vardır.
TC1

36

Eğer gibi sorunları çözmek için nasıl anlıyorsanız denetlemek bit operatörleri bir anlayış yeterli "tamsayı değeri bit 7-12 tarafından temsil "net bit 5 "bit 3 ve 8 set olup olmadığını belirlemek"" veya" bulmak Can "Çok yönlü" kontrol listesinde Twiddle Bits kutusu.

Örneğinizde , tamsayı gibi küçük veri parçalarını işlemek için yüksek performanslı algoritmaların bir derlemesi olan Hacker's Delight'tan geliyor . Bu kodu kim yazdıysa aslen sadece beş dakikada tükürmedi; Bunun arkasındaki hikaye, bitleri saymak için hızlı, dalsız bir yola ihtiyaç duyulması ve yazarın bitlerin dizelerine bakıp sorunu çözmek için bir şeyler pişirmek için zaman harcaması daha muhtemeldir. Daha önce görmediği sürece kimse bir bakışta nasıl çalıştığını anlamayacak. Bitsel temellerin sağlam bir şekilde anlaşılması ve kodu denemek için harcanan bir süre ile muhtemelen ne yaptığını çözebilirsiniz.

Bu algoritmaları anlamıyor olsanız bile, sadece var olduklarını bilmek “yuvarlaklığınıza” katkıda bulunur, çünkü zaman, yüksek performanslı bit sayımı ile uğraşma zamanı geldiğinde ne çalışacağınızı bilirsiniz. Google öncesi dünyada, bu şeyleri öğrenmek çok daha zordu; şimdi tuşlara basıldı.

SO sorunuzu yanıtlayan kullanıcı, sorunu daha önce görmüş veya karma çalışmayı okumuş olabilir. Ona yaz ve sor.


En azından bu şeylerin farkında olarak + 1. Çok fazla şey bilmek iyi bir şey. Eğer sektördeki insanlar böyle şeyler hakkında konuşmaya başlarsa, tartışılan şeyi en ufak bir ipucuna sahip olmayan odada olmak istemezsiniz.
maple_shaft

3
Yukarıdaki kod yorumunda "HD" kısaltmasını gidermek için +1.
Péter Török

Bu tür şeyleri seviyorum ve sadece HD kitap emretti. Referans için teşekkürler.
tcrosley

8

Örneğinizden, gerçekten düşünmeden kesinlikle bilmeniz gereken bazı şeyler var.

1143 i = i - ((i >>> 1) & 0x55555555);

Bit paternini 0x555 ... alternatif bir bit paterni olarak tanımlamalısınız 0101 0101 0101 ve operatörler bunu 1 bit (sağa doğru) kaydırıyorlar ve bu & maskeleme işlemidir (ve ne maskeleme demektir).

1144 i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);

Yine bir kalıp, bu bir 0011 0011 0011'dir. Ayrıca bu sefer iki tane kayıyor ve tekrar maskeliyor. kaydırma ve maskeleme, tanımanız gereken bir deseni takip ediyor ...

1145 i = (i + (i >>> 4)) & 0x0f0f0f0f;

desen katılaşır. Bu sefer 00001111 00001111 ve tabii ki bu sefer 4'ü değiştiriyoruz. Her zaman maskenin boyutuna göre kayıyoruz.

1148, i & 0x3f döndürür;

bir başka bit kalıbı, 3f, bir sıfır bloğudur ve onu daha büyük bir bloğudur.

Eğer "Çok Yuvarlak" iseniz, bütün bunlar bir bakışta açık olmalıdır. Kullanacağınızı hiç düşünmeseniz bile, muhtemelen bilmiyorsanız kodunuzu büyük ölçüde basitleştirmek için bazı fırsatları kaçıracaksınız.

Daha yüksek seviyede bir dilde bile, bit patters, çok daha küçük miktarda veride daha fazla miktarda veri depolamak için kullanılır. Bu yüzden oyunlarda daima 127/8, 63/4 ve 255/6 sınırlarını görüyorsunuz, çünkü bu kadar çok şeyi saklamanız gerekiyor, çünkü alanları paketlemeden on kez kullanmaya zorlanacaksınız. hafıza miktarı. (Pekala, sonuçta, bir dizide çok sayıda boole deposu saklamanız gerekirse, bunu düşünmezseniz kullanacağınız miktarda hafıza miktarının 32-64 katı tasarruf edebilirsiniz - çoğu dilde boolean uygular. Sık sık 32 bit olacak bir kelime: Bu seviyede rahat hissetmeyenler, bilinmeyenlerden korktukları için bu gibi verileri saklama fırsatlarına direneceklerdir.

Ayrıca, ağ üzerinden gönderilen paketleri paketlenmiş bir biçimde el ile ayrıştırma gibi şeylerden uzak duracaklar - korkmazsanız önemsiz şeyler. Bu, 1k'lık bir paketi gerektiren ve 200 byte gerektiren bir oyunu alabilirken, daha küçük olan paket ağda daha verimli bir şekilde kayar ve gecikme süresi düşürür ve daha yüksek etkileşim hızları sağlar (bu bir oyun için tüm yeni oyun modlarını etkinleştirebilir).


5

Kodu tanıdım çünkü video kareleri üzerinde işlem yapmak için daha önce yazılımda görmüştüm. Düzenli olarak ses ve video CODEC'leri, ağ protokolleri veya yonga kayıtları gibi şeylerle çalıştıysanız, çok fazla bit işlemi görürsünüz ve bu sizin için ikinci bir özellik olacaktır.

Çalışmanız bu alanlara çok sık uymuyorsa, kendinizi kötü hissetmemelisiniz. Bitsel işlemleri iyi biliyorum, ancak nadir durumlarda yavaş yavaş çalışıyorum, bir GUI yazmam gerekiyor, çünkü düzenlerin ve ağırlıkların artması ve genişlemesi ve diğerlerinin ikinci tabiatı olduğundan eminim. Güçlü yanlarınız, en fazla deneyime sahip olduğunuz yerlerdir.


4

Dikkat etmeniz gereken en önemli şeyler, tam sayıların nasıl temsil edildiği (genel olarak uzunluğun platforma bağlı olduğu sabit uzunluklu bir bitvektör) ve bunlarda hangi işlemlerin mevcut olduğudur.

Ana aritmetik işlemler + - * / %, mikro optimizasyonlar için kullanışlı olsa da, anlamaya gerek kalmadan anlaşılabilir (yine de çoğu zaman derleyici sizin için bununla ilgilenebilir)

bit manipülasyon seti | & ~ ^ << >> >>>, onları kullanabilmek için en azından geçici bir anlayış gerektirir

bununla birlikte çoğu zaman bit bayrakları bir ORaraya gelerek ve bir int geçirme gibi bir yönteme geçmek için kullanacaksınız ve sonra ANDayarları çıkaran uzun bir parametre listesinde birkaç (32) boole'yu geçmekten daha okunaklı olacak ve Arabirimi değiştirmeden değiştirmek mümkün bayrakları

Booleansların genellikle bayraklar gibi onları bir araya getirmek yerine genellikle bayt veya inç olarak tutulması


Kod parçacığına gelince, bitlerin paralel bir sayımını yapar, bu algoritmanın O(log(n))n'in bit olan saf döngü yerine bitlerin sayısı olduğu yerde çalışmasına izin verir.O(n)

İlk adım zor anlamaktır ama bunu biraz dizilerin yerini almak olduğunu kurulumdan başlarsan 0b00için 0b00, 0b01için 0b01, 0b10için 0b01ve 0b11için 0b10o takip etmek daha kolay olur

öyleyse, ilk adım için, i - ((i >>> 1) & 0x55555555)eğer iona eşit olacaksak 0b00_01_10_11, bunun çıktısı olmalı.0b00_01_01_10

( 0x5eşittir notu 0b0101)

iuf atarız i = 0b00_01_10_11bu 0b00_01_01_10 - (0b00_00_11_01 & 0b01_01_01_01), 0b00_01_10_11 - 0b00_00_01_01bunun sırasıyla gerçekleştiği anlamına gelir0b00_01_01_10

(i & 0x55555555) + ((i >>> 1) & 0x55555555)aynı sonuç için yapmış olabilirler, ancak bu 1 ek işlemdir

aşağıdaki adımlar benzer bir damarda


4
Bu kodun en önemli özelliği branşsız olması ve muhtemelen karmaşıklıktaki azalmadan daha büyük faydalar sağlamasıdır.
Simon Richter

3

Herkes temel bit-bilgili işlemleri anlamalıdır. Görevleri çok fazla pratik gerektiren optimize edilmiş ve sağlam bir şekilde gerçekleştirmek temel işlemlerin bileşimidir.

Her gün biraz manipülasyon ile çalışanlar (gömülü insanlar gibi), elbette, güçlü sezgiler ve hoş bir püf noktası geliştirecekler.

Düşük seviyeli şeyler yapmayan bir programcının bit-bilge manipülasyon ile ne kadar yeteneği olmalı? Yapıştırdığınız gibi bir stanza ile oturabilmeniz ve bir beyin teaser'ı veya bilmecesiymiş gibi yavaşça çalışabilmeniz için yeterli.

Aynı şekilde, gömülü bir programcının bir web dev'in bit-bilge manipülasyon hakkında anladığı kadar http'yi anlaması gerektiğini söyleyebilirim. Başka bir deyişle, her zaman kullanmıyorsanız, bit manipülasyonunda bilge olmamak “Tamam” dır.


3
Aslında, bazı durumlarda gömülü bir programcının http hakkında bir web geliştiricisinden daha fazlasını anlaması gerekir (ikisini de yapıyorum). Web geliştirme yaparken, genellikle bir tür çerçeveye güvenebilirsiniz. İnternet bağlantılı cihazlarla çalışan gömülü bir geliştirici olarak, bir http yığınını sıfırdan kodlamak zorunda kaldım.
tcrosley

@tcrosely, evet, kesinlikle haklısın. Belki de "http" den daha iyi bir örnek "ORM" veya "JEE" gibi bir şey olurdu. Asıl mesele, düzenli olarak pratik yapmadıkça, bazı konularda genellikle ustalığa sahip olamayacağınızdır.
Angelo,

Katılıyorum ve hiçbir zaman ORM veya JEE ile uğraşmak zorunda kalmamıştım (J2ME olarak adlandırıldığında sadece JME).
tcrosley


3

Bitsel operatörlerin yorumlaması ne kadar zor?

Gömülü sistemleri programlarım. Bu şeyleri çok çalıştım. Kod ile karma haritalar hakkındaki bağlantınız

static int hash(int h) {
   // This function ensures that hashCodes that differ only by
   // constant multiples at each bit position have a bounded
   // number of collisions (approximately 8 at default load factor).
   h ^= (h >>> 20) ^ (h >>> 12);
   return h ^ (h >>> 7) ^ (h >>> 4);
}

Kodu yüksek sesle dikte etmek ne kadar sürer diye bana çok mantıklı geldi. Açıklanan olaylar bitCounthemen açıktır, ancak aslında neden bit saydığını hesaplamak bir dakika sürer. Yorumlar olsa harika olurdu ve kodun karma problemden sadece biraz daha zor ne yaptığını anlama.

Kodu okumak ve anlamak arasında ayrım yapmak önemlidir. bitCountKodu yorumlayabilir ve ne yaptığını okuyabilirim, ancak neden çalıştığını, hatta çalıştığını bile bir dakika alacağını kanıtlayabilirim. Kodu sorunsuz bir şekilde okuyabilmek ve kodun neden olduğu gibi kodlama yapabilmek arasında bir fark vardır. Bazı algoritmalar sadece zor. Ne bir hashkod mantıklı ama açıklama açıkladı niçin ne yapılmakta idi. Bitsel operatörleri kullanan bir fonksiyonun anlaşılması zorsa, formattan bağımsız olarak zor olan zorlu matematiksel şeyler yapmak için alışkınlarsa cesaretini kırmayın.

Bir benzetme

Bu işe alışkınım. Alışık olmadığım bir konu regex. Onlarla zaman zaman yapım senaryoları üzerinde çalışıyorum, ancak günlük geliştirme çalışmalarında asla.

Bir regex'in aşağıdaki öğelerini nasıl kullanacağımı biliyorum:

  • [] karakter sınıfları
  • *, .Ve +joker
  • Dizenin başlangıcı ve dizenin ^sonu$
  • \ D, \ w ve \ s karakter sınıfları
  • / G bayrağı

Bu basit sorgulamalar yapmak için yeterlidir ve gördüğüm sorguların çoğu bundan uzak durmuyor.

Bu listede olmayan herhangi bir şey, bir aldatmaca için ulaşıyorum. Her şey, bu hariç, {}ve ()- - Hile sayfası yeterli olmayacak. Bu adamlar hakkında bir beyaz tahtaya, referans el kitabına ve belki de bir iş arkadaşına ihtiyacım olacağını bilecek kadar çok şey biliyorum. Bazı çılgın algoritmaları birkaç kısa regex satırına yerleştirebilirsiniz.

Bilinen öğeler listemde olmayan herhangi bir şeyi gerektiren veya öneren bir regex tasarlamak için, onları tanımayı ve test takımına koymayı umduğum tüm girdi sınıflarını listeleyeceğim. Regex'i yavaş ve artımlı olarak çok sayıda aralıklı adımla hazırlayacağım ve bu adımları, kontrolü sağlamak ve / veya onları yorumda bırakmak ve böylece daha sonra kırılmaları durumunda ne olacağını anlayabilmem için taahhüt ediyorum. Üretim kodundaysa, daha fazla deneyime sahip bir kişi tarafından incelendiğinden emin olacağım.

Burası bitsel operatörlerle bulunduğunuz yer mi?

Yani iyi yuvarlanmak mı istiyorsun?

Tahminime göre, böyle bir kodun bir kağıt parçasını çekerek veya beyaz tahtaya gidip işlemleri el ile geçirerek nasıl yapabileceğini yorumlayabiliyorsanız, çok yönlü sayılırsınız. Bitsel işlemler alanında iyi düzenlenmiş bir programcı olarak nitelenmek için dört şeyi yapabilmelisiniz:

  1. Genel işlemleri akıcı
    bir şekilde okuyabilir ve yazabilir Bir uygulama programcısı için, bitsel operatörlerle yapılan ortak işlemler temel operatörleri içerir |ve &bayraklar ayarlar ve siler. Bu kolay olmalı. Böyle şeyler okuyabilmeli ve yazabilmelisin.

    open('file', O_WRONLY | O_APPEND | O_CREAT );
    // Use an OR operator ^ here and ^ here to set multiple flags
    

    yavaşlamadan ( bayrakların ne anlama geldiğini bildiğinizi varsayarak ).

  2. Bazı çalışmalarla daha karmaşık işlemleri okuyabilme
    Dalları olmayan O (log (n)) zamanlarında bitleri hızlı bir şekilde sayma, hashCodes'taki çarpışma sayısının sınırlandırılmış bir miktarda farklılık göstermesini ve e-posta adreslerini , telefon numaralarını veya Bir regex ile HTML zor problemlerdir. Bu alanlarda uzman olmayan bir kişinin beyaz tahtaya ulaşması mantıklıdır, anlamak için çalışmaya başlayamamak makul değildir.

  3. Çok fazla karmaşık çalışmayı içeren karmaşık algoritmalar yazabilirsiniz
    Uzman değilseniz, karmaşık ve zor şeyler yapmayı beklememelisiniz. Ancak, iyi bir programcının sürekli çalışarak başarabilmesi gerekir. Bunu yeterince yapın ve yakında bir uzman olacaksınız :)


2

İyi bir üniversiteye gittiyseniz, Ayrık Matematik dersine girmeniz gerekiyordu. İkili, sekizli ve onaltılık aritmetik ve mantık kapılarını öğrenmiş olacaktınız.

Bu notta, kafanızı karıştırarak hissetmek normaldir, eğer web uygulamaları yazdığımdan beri size teselli olacaksa, nadiren bu şekilde kodlara bakmam ya da böyle bir kod yazmam gerekir, ancak ikili aritmetik ve bitsel operatörlerin davranışını anladığım için Sonunda burada ne olup bittiğini yeterince zaman verildiğini anlayabilirim.


2

Bir cep telefonu programcısı olarak bu tür şeylerle uğraşmak zorunda kaldım. Cihazın fazla belleği olmadığı veya iletim hızının önemli olduğu yerlerde oldukça yaygındır. Her iki durumda da, bir kaç bayta mümkün olduğunca fazla bilgi toplamaya çalışıyorsunuz.

Bazı alt düzey Windows işleri paket bit olmasına rağmen, 5 yıl içinde PHP (belki de sadece ben), 10 yıl veya daha fazla değil, bitwise operatörleri kullanarak hatırlamıyorum.

"Buna bakarken yardım edemiyorum ama kendimi aptal gibi hissediyorum" diyorsunuz. YAPMAYIN - Kızgın hisset.

Bir kovboy programcısının çıktısı ile tanıştın.

Bakım kodu yazabileceği bir şey bilmiyor mu? Ben içtenlikle bir yıl içinde geri gelip bunun ne anlama geldiğini hatırlamak zorunda olan kişi olduğunu umuyorum.

Yorumları keser misin yoksa bir tane olmasaydı bilmiyorum, ancak bu kod QA yöneticisi olduğumda kod incelemesini geçemezdi (ve birkaç kez oldum).

İşte size iyi bir kural - kodda izin verilen tek "çıplak tamsayılar" 0 1. 1'dir. Diğer tüm numaralar, dilinize bağlı olarak #defines, cost, Enums vb. Olmalıdır.

Bu 3 ve 0x33333333 NUM_WIDGET_SHIFT_BITS ve WIDGET_READ_MASK gibi bir şey söyleseydi kodun okunması daha kolay olurdu.

Bunu açık kaynak kodlu bir projeye kimin koyduğu üzerine utanç duyuyorum, ancak kişisel kod için bile iyi yorum yapın ve anlamlı tanımları / kodları kullanın ve kendi kodlama standartlarınıza sahip olun.


Onaltılık sabitleri de izin verilebilir olarak kabul ediyorum. 0xFF00(bana) çok daha okunabilir 0b1111111100000000. Ayarlanan bit sayısını belirlemek için saymak zorunda kalmak istemiyorum.
Kevin Vermeer

1

Bu özel kod parçası Hacker's Delight kitabından çıkarıldı , şekil 5.2. C (pop Fonksiyonu) Onun çevrimiçi burada . Yazarın şimdi güncellenmiş sürümleri kullanmanızı önerdiğini unutmayın: http://www.hackersdelight.org/HDcode/newCode/pop_arrayHS.c.txt

Bu tür mikro optimizasyonları öğrenmek istiyorsanız bu kitabı öneriyorum; eğlenceli, ancak çok düşük seviyeli bit programlama yapmıyorsanız, genellikle anlamazsınız; ve çoğu zaman derleyiciniz bu tür optimizasyonların çoğunu sizin için yapabilir.

Ayrıca, bu tür algoritmaları anlamak ve bir ya da iki durumda bir test üzerinde çalışmak için tüm onaltılık sayıları ikili olarak yeniden yazmaya yardımcı olur.


1

Örnek olarak açıklama. Veri bit dizileridir. Aşağıdaki işlemleri uygulayarak bayt 01001101'deki bitleri sayalım: 1. Son bitin değerini kontrol edebiliriz. 2. Diziyi değiştirebiliriz.

  1. 01001101 -> son bayt 1, toplam = 1. kaymalar
  2. 10100110 -> Son bayt 0, toplam = 1. kaymalar
  3. 01010011 -> Son bayt 1, toplam = 2. kaymalar
  4. 10101001 -> son bayt 1, toplam = 3. kaymalar
  5. 11010100 -> Son bayt 0, toplam = 3. kaymalar
  6. 01101010 -> son bayt 0, toplam = 3. kaymalar
  7. 00110101 -> son bayt 1, toplam = 4. kaymalar
  8. 10011010 -> son bayt 0, toplam = 4. kaymalar

Cevabımız: 4.

Bu zor değildi, değil mi? Bitsel işlemlerle ilgili en büyük şey, yapabileceğimiz sınırlı şeylerin olmasıdır. Biraz doğrudan erişemiyoruz. Fakat örneğin, MASK 00000001'e kıyasla son bitin değerini biliyoruz ve vardiyalı operasyonlarla her bitin son olmasını sağlayabiliyoruz. Elbette, sonuçta ortaya çıkan algoritma, alışık olmayanlar için korkutucu görünecektir. İstihbaratla ilgisi yok.


0

Yaptığınız iş aşağıdakilerle ilgili olmadığı sürece ihtiyacınız olduğunu söyleyemem:

  • Ses işleme
  • Video işleme
  • Grafik
  • Ağ oluşturma (özellikle paket boyutunun önemli olduğu yerlerde)
  • Çok büyük miktarda veri

Unix tarzı bayraklarda izinleri saklamak da, sisteminiz için özellikle karmaşık bir izinler modeliniz varsa veya gerçekten okunabilirlik pahasına her şeyi tek bir bayta sıkıştırmak istiyorsanız bunun için başka bir kullanımdır.

Bu alanların yanı sıra, eğer bir geliştirici / kıdemli geliştirici biraz kayma gösterebilirse ve kullanıyorsa | Söyleyeceğiniz mesleğe ilgi duyduğundan ve daha istikrarlı ve güvenilir bir koda yol açar.

İlk bakışta metodu elde edemediğim sürece, bahsettiğim gibi, ne yaptığını ve arka planını açıklamanız gerekir. Bunun istihbaratla ilgili olduğunu söyleyemem ama onaltılık bir gün ile günlük olarak çalışmak ve belirli kalıpların çözebileceği sorunları tanımakla ne kadar tanıdık olduğunuzu söyleyemem.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.