Tenang dan ketertiban, keseimbangan mental umum adalah keadaan yang diinginkan dari setiap orang. Hidup kita terutama berlalu dengan ayunan - dari emosi negatif dalam euforia, dan kembali.

Bagaimana menemukan dan menjaga titik keseimbangan sehingga dunia dianggap positif, dengan tenang, tidak ada yang kesal, tidak menakut-nakuti, dan saat ini membawa inspirasi dan sukacita? Apakah mungkin untuk menemukan keseimbangan panjang yang tulus? Ya, mungkin! Selain itu, kebebasan nyata datang dengan ketenangan dan kebahagiaan sederhana untuk hidup.

Ini adalah aturan sederhana, dan mereka bekerja dengan ketat. Anda hanya perlu berhenti berpikir bagaimana cara berubah, dan mulai menerapkannya.

1. Berhentilah bertanya: "Mengapa itu terjadi pada saya?" Tanyakan pada diri sendiri pertanyaan lain: "Apa yang terjadi indah? Apa gunanya itu bisa berubah untukku? " Bagus pasti, hanya perlu melihatnya. Masalah apa pun dapat menghasilkan hadiah nyata. Lebih jika Anda menganggapnya sebagai kesempatan, dan bukan sebagai hukuman atau ketidakadilan.

2. Kembangkan rasa terima kasih. Setiap malam mengeluarkan hasilnya: Apa yang bisa saya katakan "terima kasih" pada hari lalu. Jika ketenangan pikiran hilang - ingat hal-hal baik yang Anda miliki, dan tentang apa yang bisa Anda berterima kasih.

3. Muat tubuh dengan berolahraga. Ingat bahwa otak paling aktif menghasilkan "hormon kebahagiaan" (endorfin dan enkephalin) tepat selama pelatihan fisik. Oleh karena itu, jika Anda telah mengatasi masalah, kecemasan, insomnia - pergi ke luar dan berjalan selama beberapa jam. Langkah cepat atau jalankan akan terganggu dari pikiran sedih, mereka akan menaikkan otak dengan oksigen dan meningkatkan tingkat hormon positif.

4. Kerjakan "Postur Bebas" dan buat dengan pose yang bahagia. Tubuh tahu cara membantu hebat ketika Anda perlu mengembalikan keseimbangan mental. "Mengingat" perasaan sukacita jika Anda meluruskan punggung Anda, membuat bahu Anda, akan bernafas dan tersenyum. Secara sadar menahan diri Anda beberapa waktu dalam postur seperti itu, dan Anda akan melihat bahwa pikiran di kepala menjadi lebih tenang, percaya diri dan bahagia.

5. Kembalikan diri Anda ke negara "di sini dan sekarang." Olahraga dengan mudah membantu menghilangkan alarm: Lihatlah sekeliling, fokus pada apa yang Anda lihat. Mulai "suara" secara mental, memasukkan kata-kata sebanyak "sekarang" dan "di sini." Misalnya: "Aku akan pergi ke jalan sekarang, matahari bersinar di sini. Sekarang saya melihat seorang pria, ia membawa bunga kuning ... ", dll. Hidup hanya terdiri dari momen "sekarang", jangan lupa tentang hal itu.

6. Jangan melebih-lebihkan masalah Anda. Lagi pula, jika Anda bahkan bercinta dengan mata saya, itu akan memperoleh ukuran seekor gajah! Jika beberapa pengalaman tampaknya Anda tidak dapat diatasi, berpikir, seolah-olah sepuluh tahun telah berlalu ... berapa banyak masalah yang telah terjadi sebelumnya - Anda memutuskan semuanya. Karena itu, masalah ini akan, jangan terjun ke dalamnya dengan kepala Anda!

7. Tertawa lebih banyak. Cobalah untuk menemukan sesuatu yang lucu dalam keadaan saat ini. Itu tidak berfungsi - kemudian hanya menemukan alasan untuk tawa yang tulus. Lihatlah film lucu, ingat kasus lucu. Kekuatan tawa itu luar biasa! Kesetimbangan yang tulus sering dikembalikan setelah humor dosis yang baik.

8. Maafkan lebih banyak. Penelitian seperti batu-batu berbau yang berbau busuk sehingga Anda berada di mana-mana dengan Anda. Apa ketenangan damai dengan kargo seperti itu? Karena itu, jangan pegang kejahatan. Orang-orang hanya manusia, mereka tidak bisa sempurna dan selalu membawa barang. Sangat memaafkan pelanggar dan memaafkan diri sendiri.

10. Ngobrol lagi. Setiap rasa sakit yang tersembunyi di dalamnya dikalikan dan membawa buah-buahan sedih baru. Karena itu, bagikan pengalaman Anda, bahasinya dengan orang yang dicintai, cari dukungan mereka. Jangan lupa bahwa seseorang tidak dimaksudkan untuk kesepian. Keseimbangan mental dapat ditemukan hanya dalam hubungan dekat - ramah, kelahiran yang dicintai.

11. Berdoalah dan bermeditasi. Jangan biarkan pikiran jahat buruk mengendalikan Anda, menabur panik, rasa sakit dan iritasi. Ubah mereka untuk sholat pendek - menarik bagi Tuhan atau meditasi - kondisi tanpa berpikir. Tetap aliran percakapan internal yang tidak dikelola. Ini adalah dasar dari suatu kondisi mental yang baik dan stabil.

Ketika tingkat selanjutnya disahkan, mereka pasti akan merangkak bayangan dan mengatur cek apakah keseimbangan dan kehadiran roh tetap selama tarian mereka.

Reaksi terhadap bayangan mengguncang pendulum ego dan memberikan kebenaran yang kejam: keseimbangan diregangkan sebagai tali yang berhati-hati dan akan mengancam akan menyusul untuk memikat pemberani di masa lalu.

Sejati keseimbangan adalah kurangnya pengamatan dengan kecanduan: pencarian untuk sesuatu salah di sini.

"Semuanya, seperti biasa," kata kontemplator batin, bahkan jika ancaman dibesarkan di sekitar wabah atau mentah, "hanya orang-orang ini terluka dan perlu menyadari jalan mereka."

Tetapi jika ada reaksi lain, maka jalan tidak ditempuh dan penyelesaian panggung masih di depan.

- Apa yang harus saya lakukan? - Anda hanya di awal perjalanan.
- Saya siap untuk berdetak sampai mati! - Anda melewati seperempat dari jalan.
- Saya suka petualangan seperti itu! - Setengah jalur sudah berlalu.
"Pergilah padaku, aku menyelamatkanmu," Tiga perempat dari cara kamu berlalu. "
- Bagaimana saya berterima kasih kepada Anda untuk apa sebenarnya Anda! - sampai akhir level tersisa 2/10 cara.
- Traveler, di mana Anda menjaga jalan Anda dan apa yang ingin Anda capai agresi Anda? - Anda telah melewati level ini dan lulus ujian yang mengancam bayangan.

Ada banyak cinta dan banyak kesenian di tempat teduh. Sebagai guru yang baik, dia bermain dengan sempurna di Tirana, pengorbanan, dan penyelamat untuk memeriksa keseimbangan Anda. Bagaimanapun, dalam bahasa gamer: Keseimbangan adalah tingkat Tuhan.

© Mark Iphraimov

********

Ketentuan Tenang

Bersiaplah untuk melepaskannya.

Orang-orang yang memadati kepala Anda, memanipulasi, menuduh, mengucapkan, disayangkan, yang merebus Anda gila, merampas ketenangan emosional.

Sama.

Kesetaraan di mana setiap orang bertanggung jawab atas kehidupan mereka, dan tidak berharap bahwa seseorang akan membuatnya bahagia atau memberi tahu saya cara hidup.

Waspada.

Jangan menyerah pada keluhan dan manipulasi. Hubungan adalah kehadiran dalam kehidupan orang lain, bukan keselamatan itu. Jangan bingung dengan permintaan langsung untuk bantuan. Mereka bertanya - bantuan sebanyak mungkin bagi Anda.

Bersiaplah untuk pindah.

Jangan terlibat dalam pembongkaran dan biaya. Jangan membenarkan. Jika Anda salah - minta maaf. Itu cukup. Jika ada yang sangat rusak oleh indera seseorang - tanyakan apa yang dapat Anda lakukan untuk memblokir rasa bersalah? Jika jawabannya tidak mengikuti, bersiaplah untuk pindah. Ini bukan lagi tentang kesalahan Anda, tetapi tentang tuduhannya.

Sulit.

"Kamu akan memuji - jangan bersukacita. Teguran - jangan salah "(c). Anda tidak bisa menang atau kalah sepanjang waktu. Anda bahkan tidak dapat berbagi segalanya untuk kehilangan dan menang. Temukan apa yang telah mereka pelajari dan yang baru ditemukan dalam diri Anda, berkat acara ini. Pergi dengan cara Anda sendiri, langkah padat.

Lewat.

Kami melewati konflik orang lain, gosip, kategorikal, evaluasi, kebencian, balas dendam, rengekan, label, iri. Jangan kencangkan ke dalam semua ini, jangan mendukung, jangan buang waktu Anda ... berkeliling ...

Bersiaplah untuk berpisah.

Kami terus berkenalan dengan inovasi bahasa dari standar C ++ 17. Dalam artikel ini, kita akan melihat apa yang akan saya sebut kelanjutan bahasa. Itu. Tidak baru, dari sudut pandang fungsionalitas, kami tidak akan melihat semuanya di sini - melainkan membawa fungsional lama ke keadaan yang lebih dapat diterima. Di sini kita akan melihat: Apa yang telah berubah dengan prosedur untuk mengeksekusi penundukan, mana jaminan baru muncul dalam hal pengucilan penyalinan opsional, dan yang baru ditambahkan ke lambda.

Kami membawa pesanan

Banyak C ++ - programmer menemukan "menarik" tugas-tugas di mana beberapa kode kontroversial diberikan dan ditanyakan: "Apa yang akan diturunkan?". Salah satu contoh umum dari kode tersebut adalah contoh berikut:

Int i \u003d 0; i \u003d i ++ + i ++;

Kode "pintar" seperti itu ditemukan di jaringan dan pada wawancara. Tujuan dari masalah tersebut adalah untuk mengetahui seberapa akrab dengan karakteristik prosedur untuk pelaksanaan ekspresi dalam C ++.

Setidaknya ini adalah tujuan yang dinyatakan. Benar, saya percaya bahwa dalam kebanyakan kasus seseorang yang mengajukan pertanyaan seperti itu hanya ingin merasakan kebanggaannya. Mengetahui bahwa itu akan output seperti kode ini sepenuhnya opsional, karena kode seperti itu tidak dapat ditulis. Dan jika Anda tidak dapat menulis, lalu mengapa meminta pemohon tentang ini? Pertanyaan-pertanyaan seperti itu sesuai untuk "merokok", di mana programmer yang akrab membahas uji coba perbatasan; Mereka tidak sesuai untuk wawancara. Saya sarankan untuk berkenalan dengan pemikiran Remond Chen pada topik ini: "Apakah Peple menulis kode gila dengan beberapa efek samping yang tumpang tindih dengan wajah lurus?"

Tapi ini adalah kasus patologis, yang terlihat oleh tampilan yang tidak bersenjata, dan, seperti yang saya sebutkan, seorang programmer normal tidak akan pernah menulis. Tetapi ada kasus yang kurang jelas bahwa bahkan programmer berpengalaman dapat menulis. Mari kita lihat sepotong kode seperti itu:

Void F2 () (STD :: String S \u003d "Tapi saya telah mendengarnya bekerja bahkan jika Anda tidak percaya pada itu"; s.replace (0, 4, "") .Replace (s.find ("bahkan" ), 4, "hanya") .Replace (s.find ("don" t "), 6," "); menegaskan (S \u003d\u003d" Saya telah mendengarnya hanya berfungsi jika Anda percaya pada TI ");)

Kode ini disajikan dalam buku terbaru Sturastrup "Bahasa Pemrograman C ++ Edisi 4", di bagian 36.3.6, dan pada pandangan pertama terlihat cukup cocok dan benar. Tetapi ini hanya pada pandangan pertama, benar-benar tidak ada jaminan bahwa kode di atas akan membentuk string yang diharapkan, dan, sesuai, menegaskan tidak akan berfungsi.

Seperti yang kita lihat, bahkan C ++ Creator membuat kesalahan dalam sepotong kecil kode. Apa yang dikatakan? Pertama-tama, bahwa Anda tidak perlu menangani banyak kode menjadi satu ekspresi, di mana ada banyak hal dari berbagai hal. Versi pertama dari kode ini, yang disajikan pada halaman yang sama dari buku ini jauh lebih mudah dan lebih baik:

Void f () (std :: string s \u003d "tapi aku sudah mendengarnya bekerja bahkan jika kamu tidak percaya pada itu"; s.replace (0, 4, ""); s.replace (s.find (" Bahkan "), 4," hanya "); s.replace (s.find (" don "t"), 6, ""); menegaskan (s \u003d\u003d "Saya telah mendengarnya hanya jika Anda percaya itu" );)

Opsi ini tidak hanya benar dari sudut pandang eksekusi program program, juga lebih mudah dibaca. Tapi ini bukan satu-satunya kesimpulan yang harus kita lakukan adalah yang lain, yang sudah membuat penulis proposal P0145R3: dengan urutan eksekusi ekspresi ekspresi dalam C ++ ada yang salah.

Tatanan lama.

Sebelum kita beralih ke proposal dan perubahan di mana adopsi itu dipimpin, saya mengusulkan untuk mengingat aturan saat ini. Ini akan membantu menyegarkan dalam memori (dan untuk belajar kepada seseorang) mengapa contoh berikut di atas adalah kode C ++ yang buruk (murni dari sudut pandang bahasa, bukan estetika). Jadi, berbeda dengan banyak bahasa pemrograman lainnya, dalam C ++, prosedur untuk pelaksanaan subbagian dalam ekspresi tidak ditentukan oleh standar dan tetap pada kompiler tumpahan. Tentu saja, masih ada perintah tertentu, tetapi saya tidak akan menggambarkan semua kehalusan di sini, karena Mereka ada banyak. Penting untuk dipahami bahwa, sebagai aturan, 2 setelan satu ekspresi besar dieksekusi secara independen satu sama lain tak pasti Pesanan (pengecualian besar untuk aturan ini adalah operator koma ",").

Misalnya, mari kita ambil contoh pertama kami: i \u003d i ++ + i ++; . Dalam ekspresi besar ada 4 subbagian kecil: i, i ++, i ++ dan i ++ + i ++. Apa yang menjamin standar C ++ 14? Ini menjamin (expr.ass) bahwa ekspresi I ++ akan dihitung sebelum jumlah mereka dihitung, serta fakta bahwa ekspresi saya akan dihitung sebelum ditugaskan hasil jumlah. Saya juga mengingatkan bahwa ekspresi I ++ mengembalikan nilai lama I, dan kemudian meningkatkan I per unit (kenaikan). Ini, pada gilirannya, berarti bahwa ekspresi dianggap dihitung ketika nilai lama I diperoleh.

Dengan demikian, ternyata kompiler dapat memilih beberapa cara untuk menghitung ekspresi penuh: tidak terbatas pada kapan efek ++ harus diterapkan pada i. Akibatnya, kita bisa mendapatkan nilai yang berbeda di I, yang, tentu saja, tidak cocok di mana saja, karena Program ini harus memberikan hasil yang dapat diprediksi yang tidak tergantung pada kebetulan kompiler. Misalnya, pesanan mungkin seperti ini:

    Hitung i pertama, sama dengan 0.

    Hitung yang kedua, itu sama dengan 0.

    Catat hasil kenaikan kedua, kami mendapatkan i \u003d\u003d 1.

    Catat hasil kenaikan pertama, kami mendapatkan i \u003d\u003d 2.

    Hitung I di sebelah kiri tanda kesetaraan.

    Hitung jumlah: 0 + 0 \u003d\u003d 0.

    Rekam hasil dari jumlah dalam i.

    Mengembalikan hasil ekspresi penuh, mis. Saya, yaitu 0.

Anda dapat melakukan langkah-langkah di atas dalam urutan apa pun yang tidak melanggar jaminan yang diberikan oleh standar, dan sebagai hasilnya, jawaban yang berbeda akan diperoleh.

By the way, Anda dapat mempertimbangkan opsi dan lebih sederhana: i \u003d ++ i + i ++; . Di sini segera terlihat bahwa hasilnya akan berbeda tergantung pada apa yang akan dihitung terlebih dahulu ++ I atau I ++, karena Pada ekspresi pertama, efek samping (kenaikan i per unit) terjadi sebelum perhitungannya.

Meskipun opsi kedua lebih terlihat, keduanya memberikan output yang disebut perilaku yang tidak pasti (NP, Bahasa Inggris yang tidak ditentukan). Semua programmer Matte C ++ terbiasa dengan istilah ini, tetapi tidak mungkin banyak yang tahu semua bahasa C ++, di mana perilaku seperti itu dapat memanifestasikan dirinya. Ini adalah topik yang luas dan cukup menarik yang dapat Anda satukan dengan satu artikel, jadi saya tidak akan berhenti pada ini. Bahkan, analisis terperinci dari ekspresi tidak diperlukan, karena Sesuai dengan standar (intro.execution / p15), ekspresi kita adalah NP adalah karena dalam satu ekspresi ada dua subsistensi yang memodifikasi objek skalar yang sama, dan prosedur untuk perubahan tidak didefinisikan. Mengapa saya memberikan analisis ini? Saya mencoba menunjukkan alasannya NP memanifestasikan dirinya atas dasar keterbatasan arus untuk ekspresi, I.E. Tujuannya adalah untuk menunjukkan bahwa dengan aturan standar saat ini tidak ada jalan keluar lain, bagaimana membuat tangan.

Sekarang mari kita beralih ke contoh kedua kita, dan kita akan mencari tahu bahwa itu tidak begitu bersamanya. Untuk menyederhanakan pemahaman, saya akan mengurangi contoh ini untuk ekspresi seperti itu: s.replace (s.find ("even"), 4, "hanya"). Apa yang kita miliki di sini? Ada objek S, ada panggilan ke STD :: string :: string :: ganti function, std lain :: string :: function function, serta argumen untuk fungsi-fungsi ini. Jaminan apa yang memberi kita standar? Standar memastikan bahwa argumen fungsi akan dihitung sebelum fungsi disebut. Ini juga menjamin bahwa objek tempat fungsinya dijalankan harus dihitung sebelum fungsi untuk disebabkan. Semua ini dapat dimengerti dan logis. Benar, kami tidak memiliki jaminan lain: Tidak ada jaminan bahwa S akan dihitung sebelum argumen dari fungsi ganti akan dihitung, dan tidak ada jaminan mengenai prosedur untuk menghitung banyak argumen ini. Oleh karena itu, kita bisa mendapatkan urutan perhitungan: s.find ("bahkan"), "hanya", 4, s, s.replace (...). Salah satu yang lain, yang tidak melanggar jaminan standar yang ditunjukkan sebelumnya.

Dari teks di atas, Anda perlu menanggalkan 2 poin utama: 1) Ekspresi di sebelah kiri dan kanan titik dapat dihitung dalam urutan apa pun, 2) argumen fungsi dapat dihitung dalam urutan apa pun. Berdasarkan hal ini, sekarang harus jelas mengapa kode dari buku bangku salah. Dalam ekspresi:

S.replace (0, 4, "") .Replace (s.find ("even"), 4, "hanya") .Replace (s.find ("don" t ")," ");

Kedua panggilan akan berakhir sebelum penggantian sebelumnya (dalam kode) akan dilakukan. Dan mungkin setelah. Yang lain bisa sebelumnya, dan yang kedua kemudian - itu tidak diketahui, karena Pesanan tidak ditentukan. Akibatnya, kode ini memberikan hasil yang tidak dapat diprediksi, meskipun tidak Np. Namun, seperti yang saya katakan, kode seperti itu, seorang programmer yang kompeten tidak akan menulis, tetapi fakta bahwa ia berada dalam kitab Sturastrup tidak berarti bahwa ia ingin menulis - ia hanya membawa contoh tantangan rantai.

Selain itu, tantangan rantai mungkin tidak begitu jelas. Misalnya, ini kode:

STD :: cout.<< first << second;

Ini juga merupakan rantai panggilan yang mungkin seperti ini:

STD :: cout.operator.<<(first).operator<<(second);

atau seperti:

Operator.<<(operator<<(std::cout, first), second);

Perbedaannya tidak mendasar. Jika tiba-tiba ekspresi pertama dan kedua entah bagaimana merujuk pada satu objek, dengan salah satu ekspresi ini memodifikasi objek ini, maka kemungkinan besar bahwa pada output kita akan menerima kode yang tidak stabil atau Np.

Contoh lain yang menarik dari kalimat tersebut:

STD :: Peta. Kamus; Dictionary \u003d Kamus;

Ya, kodenya terlihat tidak berarti, tetapi apa yang akan dia berikan sebagai hasilnya? Bahkan kode yang tidak berarti harus memberikan hasil yang dapat diprediksi. Sayangnya, tampilan C ++ 2014 hanya mengangkat bahu - saya tidak tahu, kata mereka.

Fungsi dan operator

Ketika kami meneliti rantai panggilan, kami menyentuh titik menarik lainnya: Apa yang sebenarnya memutar tantangan STD :: cout<< first << second; . Как мы уже видели, в зависимости от того, чем являются first и second , мы можем получить либо цепочку вызовов функций-членов, либо же вложенные вызовы свободных функций. Но ведь в изначальном варианте записи у нас есть три выражения и 2 оператора << , у нас нет вообще никаких функций!

Tidak mungkin bahwa kode ini menyebabkan masalah dari masalah C ++: Kita semua cepat atau lambat belajar tentang kelebihan operator dan mengambil semuanya sebagai tepat, tetapi ada satu nuansa dalam kelebihan beban ini. Untuk menunjukkan nuansa ini, mari kita tulis templat fungsi seperti itu:

Template. << "first\n", value++) && (cout << "second\n", value++); }

Ya, template bukan dari yang paling berguna dan penting, tetapi seperti yang akan kita lihat sekarang, cukup indikatif. Mari kita panggil fungsi Cleverfun dengan argumen tipe int, yang akan mengarah pada instance dari fungsi seperti itu:

Bool cleverfun (int & nilai) (kembali (cout<< "first\n", value++) && (cout << "second\n", value++); }

Saat memanggil fungsi ini, output dijamin:

jika nilai pertama ++ mengembalikan 0, jika tidak akan seperti ini:

PERTAMA KEDUA.

Dan tidak ada yang lain, yang jelas: untuk && operator ada jaminan ketat hubung singkat (KZ, Bahasa Inggris. Sirkuit pendek) dan melakukan sisi kiri ke kanan. Di sisi lain, jika kita membuat tipe int untuk operator override dan postfix ++, dan operator &&, dan kemudian kita mengantumkan templat kita dengan itu, kita akan mendapatkan fungsi seperti itu:

Int cleverfun (int & nilai) (kembali (cout<< "first\n", value.operator++(0)) .operator&&((cout << "second\n", value.operator++(0))); }

Saya tidak mengungkapkan apa yang harus mengubah panggilan cout untuk tidak sampah dan tidak terlalu mudah untuk membaca kode lebih. Berdasarkan pada yang dipertimbangkan sebelumnya, Anda tidak boleh terkejut dengan fakta bahwa output dari kode ini akan berbeda dari int yang dihasilkan. Di sini Anda juga bisa mendapatkan 2 opsi, tetapi mereka akan menjadi orang lain:

PERTAMA KEDUA.

Kedua pertama.

Jelas, opsi dengan satu terlebih dahulu kita tidak bisa mendapatkan fakta bahwa CW untuk operator yang diganti tidak berfungsi. Jika Anda hati-hati melihat contoh ini, Anda harus memahami mengapa: untuk melakukan operator yang diganti && untuk itu, argumen harus dihitung (yaitu, untuk selamat tinggal), selain itu, KZ hanya berfungsi ketika ekspresi di sebelah kiri adalah bool, yang dalam kasus yang didefinisikan ulang operator tidak bisa. Dengan demikian, tentang CZ tidak ada ilusi tidak bisa - itu bukan untuk operator yang diganti dan tidak akan.

Nah, CZ tidak mungkin, jadi kami tidak dapat menerima opsi output pertama (hanya yang pertama), tetapi bahkan opsi dengan dua garis output mungkin berbeda, dan mungkin tidak! Pikirkan saja: Kami memiliki kode yang sama di dalam templat fungsi, yang, dengan beberapa argumen template, dilakukan sesuai dengan satu aturan, dan untuk yang lain dengan benar-benar berbeda.

Semua ini karena dalam jaminan C ++ 14 untuk operator dan operan mereka berbeda tergantung pada operan apa. Menurut standar, untuk jenis integral, semua jaminan operator berfungsi sebagaimana dijelaskan untuk mereka dalam standar, tetapi untuk operator yang diganti, aturan yang mengelola panggilan ke fungsi sudah berfungsi. Itu. Untuk operator yang diganti, ekspresi "ditulis ulang" oleh kompiler pada rantai fungsi fungsi fungsi, dan setelah itu, aturan dari standar diterapkan, yang didefinisikan untuk rantai tersebut. Tidak ada jaminan operator dari standar untuk operator yang didefinisikan ulang tidak berfungsi.

Semua yang dijelaskan sebelumnya menarik gambar yang sangat buruk: terlalu banyak dalam C ++ Chaos, dalam hal menghitung ekspresi. Tidak heran jika itu bosan dengan orang-orang seperti itu, dan pernyataan abadi bahwa semua kebutuhan ini untuk beberapa optimasi mitos dan tidak boleh diubah, tidak lagi dianggap sebagai alasan yang cukup. Akal sehat menang, dan C ++ 17 menerima beberapa perubahan pada bagian dari bimbingan pesanan dalam kekacauan ini. Dan perubahan seperti apa yang kita dan pertimbangkan.

Pesanan baru

Perubahan pertama yang dibawa oleh C ++ 17 adalah memesan eksekusi Operator postfix, operator penugasan, serta operator shift yang rusak. Sekarang semua operator postfix, serta operator dari pergeseran yang dipukuli, dilakukan dari kiri ke kanan, sementara operator penugasan bertentangan, hak untuk pergi. Di bawah "Implementasi", dalam konteks ini, maksud saya fakta bahwa ekspresi dihitung (mis. Hasilnya dikembalikan), dan semua efek samping yang terkait dengannya tetap (berkomitmen).

Untuk menjelaskan bagaimana ekspresi sekarang dipesan, ambil contoh dari proposal (dalam contoh di bawah ini, ekspresi A pertama kali dilakukan, lalu b):

A.b a-\u003e b a -\u003e * b a (b1, b2, b3) b @ \u003d a [b] a<< b a >\u003e B.

Di mana @ adalah operator yang diizinkan dalam konteks ini (misalnya +). Dengan demikian, berdasarkan pada aturan baru, contoh yang diberikan dalam buku bangku ke C ++ 11, di C ++ 17 akhirnya menjadi benar dan akan selalu memberikan hasil yang benar dan diharapkan. Seperti yang Anda lihat, aturan baru belum menyentuh urutan eksekusi argumen fungsi relatif satu sama lain: mereka masih dapat dilakukan dalam urutan apa pun, tetapi eksekusi mereka tidak dapat berpotongan (interleave) satu sama lain. Dengan kata lain, mereka dipesan relatif satu sama lain, tetapi pesanan tidak diatur.

Sekarang mari kita lihat beberapa contoh "menarik", di mana di C ++ 14 yang kami miliki NP, dan di C ++ 17 sudah hilang. Saya mengutip contoh-contoh ini secara eksklusif untuk konsumsi Anda sendiri, saya mengeja Anda untuk tidak menyiksa orang dalam wawancara.

I \u003d i ++; f (++ i, ++ i) f (i ++, i ++) array \u003d i ++ i<< i++ cout << i++ << i++

Tetapi contoh-contoh ini tetap ada NP dalam standar baru:

I \u003d i ++ + i ++ i \u003d ++ i * i ++

Karena tidak ada aturan yang mengatur prosedur untuk melakukan pencitraan operator aritmatika belum ditambahkan. Tetapi kenyataan itu NP hilang dari contoh-contoh ini sama sekali berarti bahwa sudah waktunya untuk menjenuhkan kodenya seperti itu - tidak. Masing-masing contoh ini membutuhkan perawatan dan bukti bahwa itu tidak Np. Itu. Setiap programmer yang telah melihat kode seperti itu akan dipaksa untuk berhenti, ingat (atau naik ke standar) dan pastikan dia melihat kode yang tepat. Kode tidak boleh "pintar", kode harus dimengerti. Selain itu, kombinasi ekspresi seperti itu memberi sedikit, pada kenyataannya.

By the way, pembaca yang penuh perhatian mungkin memperhatikan garis cout<< i++ << i++ в вышеприведённых примерах, и если он не знает обо всех правилах и поверил автору, то он наверняка воспользовался такой логикой: пример переписывается как

Cout.operator.<<(i++).operator<<(i++)

setelah itu, aturan baru berlaku untuk itu. , jadi tidak ada kode dalam kode Np. Alasan seperti itu tampaknya logis, tetapi tidak cukup benar. Bahkan, semuanya lebih mudah: contoh benar-benar "ditulis ulang" oleh kompiler dengan yang saya bawa, tetapi urutan eksekusi dibangun untuk ditulis ulang! Itu. Menurut aturan baru, operator yang kelebihan beban dikenakan aturan eksekusi untuk operator yang disematkan.Setidaknya dalam hal prosedur untuk menghitung pencitraan. Oleh karena itu, berdasarkan fakta bahwa operator operan kiri<< вычисляется до правого у нас и нет Np dalam kode.

Ternyata kita tidak lagi memiliki perbedaan dalam urutan apa yang akan dieksekusi untuk operator built-in dan kelebihan beban, dan contoh kami dari bagian masa lalu:

Template. Bool cleverfun (t & nilai) (kembali (cout<< "first\n", value++) && (cout << "second\n", value++); }

untuk jenis apa pun, pertama akan selalu menarik terlebih dahulu, dan kemudian kedua. Pesanan output terbalik sekarang dikecualikan oleh standar. Ini jelas merupakan inovasi yang sangat penting yang memungkinkan Anda untuk membicarakan kode yang ditulis, dan bukan apa yang akan dihasilkan darinya. Sangat menarik untuk dicatat bahwa inovasi ini memunculkan perbedaan antara tantangan eksplisit dan implisit dari operator kelebihan beban. Pertimbangkan contoh:

#Include. Menggunakan namespace std; Kelas Someclass (Operator Teman Int<<(const SomeClass& obj, int&); public: SomeClass(int var): m_Var{var} { } private: int m_Var; }; int operator<<(const SomeClass& obj, int& shift) { return obj.m_Var << shift; } int main() { int i = 0; int result = SomeClass{i = 1} << (i = 2); cout << "First result: " << result << "\n"; result = operator<<(SomeClass{i = 1}, i = 2); cout << "Second result: " << result << "\n"; };

Hasil pertama dijamin menjadi 4, sedangkan yang kedua dapat berupa 2 dan 4. Contoh ini menunjukkan perbedaan antara panggilan eksplisit dan implisit ke operator kelebihan beban di C ++ 17.

Jelas, dengan diperkenalkannya pesanan baru, banyak ekspresi kompleks yang berbeda muncul yang memberi NP dalam standar masa lalu, dan sekarang diizinkan, tetapi ini tidak berarti bahwa mereka harus mulai secara besar-besaran muncul dalam kode. Seharusnya tidak hanya karena mereka rumitDan semua yang sulit dimengerti harus dihindari. Tetapi aturan baru memberi kita tidak hanya kemungkinan memanggil fungsi tipe F (i ++, i ++), tanpa rasa takut untuk mendapatkan program yang tidak dapat dioperasikan. Aturan baru mengkhianati kode pada C ++ lebih ketegasan dan pesanan, terima kasih yang, termasuk, kita sekarang dapat menulis kode yang andal dengan rantai rantai (eksplisit atau implisit - tidak masalah).

Meskipun saya mengungkapkan beberapa "fi" tentang kode dari Kitab Kotak, saya jauh dari lawan tantangan rantai, dan jika Anda melihat kode modern, ditulis menggunakan bahasa imperatif, maka kita dapat melihat bahwa itu mengandung lebih banyak Rantai (misalnya LINQ dan Tugas + Continuewith dari C #, atau Lodash / Underscore dan janji + kemudian dari JS). C ++ juga masuk ke arah ini, dan segera kita dapat melihat analog dari contoh-contoh di atas dalam bentuk rentang-v3 dan masa depan + kemudian dalam standar C ++ di masa depan. Tetapi sebelum rilis standar baru, kita dapat menggunakan berbagai perpustakaan yang antarmuka yang mendorong penggunaan rantai rantai.

Secara umum, menurut saya, perubahan aturan untuk prosedur untuk menghitung ekspresi adalah salah satu inovasi paling penting C ++ 17, yang hanya sedikit orang akan perhatikan, karena segala sesuatu (atau hampir semuanya) hanya akan berfungsi sesuai dengan akal sehat. Dan akal sehat dalam standar C ++ menjadi semakin banyak.

Meminimalkan penyalinan

Salah satu langkah pertama dalam pelatihan C ++ adalah studi tentang konstruktor penyalinan. Bagaimanapun, menggunakannya Anda dapat dengan mudah menentukan apa dan kapan disalin. Itu. Kami menulis kelas kami, tambahkan konstruktor penyalinan di sana, di mana kami meresepkan output melalui cout, dan menikmati output, menurutnya kami mengetahui berapa banyak salinan yang kami buat.

Dengan munculnya semantik gerakan, situasinya agak lebih rumit, sehingga untuk kelengkapan gambar sekarang perlu membuat konstruktor yang bergerak. Tetapi untuk bagian ini tidak masalah, karena Semua aroma itu berlaku untuk penyalinan dan bergerak.

Misalnya, mari kita menulis kode seperti itu:

#Include. Menggunakan namespace std; Kelas SOMECLASS (PUBLIK: SOMECLASS () \u003d DEFAULT; SOMECLASS (CONS SOMECLASS &) (cout<< "Copy ctor called.\n"; } }; SomeClass meReturn() { return SomeClass{}; } int main() { auto some = meReturn(); };

Berapa kali frasa "salinan Cord disebut" muncul di layar, jika Anda mengumpulkan kode ini pada kompiler yang mengimplementasikan C ++ 14 dan jalankan program? Nol, satu, atau bisa dua kali? Jawaban yang benar adalah: tidak diketahui.

Mereka yang menjadi jawabannya telah menjadi kejutan, pantas mendapatkan penjelasan yang kami tuju. Jadi, pertama-tama mari kita tinggalkan standar dan pertimbangkan jumlah salinan maksimum di sini. bisa dibuat. Jumlah terbesar dari kemungkinan salinan di sini adalah nomor 2: salinan pertama dibuat ketika menjalankan pernyataan kembali, dan salinan kedua dibuat saat merancang beberapa objek. Tetapi jika Anda menjalankan kode ini pada kompiler modern yang lebih atau kurang (tanpa kunci tambahan!), Anda tidak mungkin melihat output ganda; Hasil yang lebih mungkin adalah satu baris, atau tidak akan ada output sama sekali. Sekarang sedikit kode yang dimodifikasi dari fungsi kami, itu akan menjadi opsi kedua:

Someclass mereturn () (Someeclass beberapa (); kembalikan beberapa;)

Jika kita memenuhi kode ini pada kompiler populer, output dapat berubah, dan mungkin tidak (itu berubah pada MSVC 2017, dalam mode debug). Akhirnya, kami masih mengubah kode fungsi, hanya kali ini output dijamin akan berubah (relatif terhadap opsi pertama dan dengan mempertimbangkan posisi saat ini dengan kompiler):

Someclass mereturn () (Someeclass beberapa (); if (false) kembali SOMECLASS (); kembalikan beberapa;)

Jadi, fungsinya, pada dasarnya, dalam semua versi yang sama, dan perilakunya berbeda - apa yang terjadi di sini? Mulai lagi. Menurut standar C ++, dalam beberapa kasus kompiler mungkin tidak menyalin objek; Situasi ini dinamai melewati penyalinan (PC, Elding Copy Elision). Daftar lengkap (agak pendek) fitur yang dapat Anda tentukan apakah skros copy diperbolehkan dijelaskan di Class.Copy / P31. Kami tertarik pada dua situasi yang serupa, tetapi masih berbeda.

Dalam contoh asli, fungsi kami mengembalikan sementara tanpa nama Sebuah Objek. Dalam situasi seperti itu, kompiler memiliki hak untuk menurunkan kedua penyalinan dan hanya membuat objek langsung di beberapa. Pada orang-orang, situasi ini dinamai optimalisasi nilai yang dikembalikan (OBA, optimasi nilai pengembalian bahasa Inggris). Jika kita melihat GCC / CLANG / MSVC, kita akan melihat bahwa untuk fungsi seperti itu mereka menyingkirkan kedua salinan dan, oleh karena itu, output akan kosong.

Optimalisasi tersebut diizinkan tidak hanya untuk pengembalian, tetapi juga untuk tempat lain di mana inisialisasi objek sementara dan tidak disebutkan namanya diinisialisasi. Jadi, jika Anda memiliki kekosongan (SOMECLASS), yang disebut sebagai Meaccept (Someclass ()), maka kompiler memiliki hak untuk menghilangkan penyalinan yang berlebihan.

Sekarang mari kita beralih ke opsi kedua di mana kita buat bernama Objek di tumpukan. Output untuk GCC / CLANG tidak berubah, tetapi untuk MSVC (dalam mode debug) ada satu baris dalam output, jelas bahwa dalam hal ini MSVC menyingkirkan salinan kedua. Berdasarkan hal tersebut di atas, menjadi jelas bahwa kompiler juga menggunakan PC, tetapi ini terjadi sesuai dengan kriteria yang sedikit berbeda: Memiliki hak untuk menyingkirkan penyalinan bernama Objek pada tumpukan yang kembali dari fungsi. Optimasi serupa diterima dalam nama orang optimalisasi nilai yang dinilai yang dinilai (Oivz, Bahasa Inggris. NAMATAN OPTIMASI NILAI KEMBALI).

Kompilasi optimasi ini lebih sulit untuk mematuhi bahwa kami terlihat dalam versi ketiga, di mana kami menambahkan benar-benar tidak berguna jika, yang membuat ketiga kompiler utama menyimpan dan membuat salinan. Dengan demikian, Oivz lebih "rapuh" optimasi daripada ops sederhana, dan, sebagai aturan, dimatikan ketika ada beberapa pengembalian yang berbeda dalam kode. Ini adalah salah satu argumen mengapa hanya satu pengembalian yang harus berfungsi (saya tidak bisa mengatakan bahwa argumennya sangat meyakinkan).

Fakta yang menarik adalah bahwa optimasi yang dijelaskan di atas digunakan pada kompiler bahkan ketika kita mengkompilasi dengan optimasi terputus (-O0, / OD). Selain itu, hanya GCC dan dentang yang dapat dibuat untuk membuat semua salinan. Untuk melakukan ini, Anda perlu menggunakan tombol -fno-elide-constructors, dan MSVC dalam kondisi apa pun tidak akan membuat dua salinan, dan tidak ada kunci [publik] untuk menonaktifkan perilaku ini.

Ada momen lain untuk menyebutkan. Meskipun dalam kompiler C ++ 14 dan dapat menghapus kedua salinan, dengan demikian tanpa melakukan copy constructor tidak pernah, itu harus memberikan kesalahan kompilasi jika tidak ada desainer seperti itu. Itu. Jika kita menulis seperti itu, bukan desainer desain yang ada: SOMECLASS (CONS SOMECLASS &) \u003d HAPUSProgram ini tidak akan keberatan bahkan ketika kompiler dapat menyingkirkan - desainer seharusnya tetap.

Yah, akhirnya yang ketiga: bergerak. Jika kompiler dapat menghilangkan salinan, itu dapat dihilangkan. Itu. Dalam hal ini, mereka benar-benar setara. Dalam hal ini, omong-omong, satu situasi menarik terhubung. Banyak programmer (kesimpulan tentang banyak hal yang dilakukan berdasarkan kode yang saya lihat di jaringan) tidak cukup memahami semantik gerakan dan menulis kode itu mirip dengan ini: Kembalikan STD :: Pindahkan (SomeObject). Tampaknya kode itu benar-benar tidak berbahaya dan berfungsi seperti yang diharapkan dengan menulisnya, hanya kode ini terjamin Mematikan AIC. Seperti yang Anda pikirkan, apa yang lebih baik: lakukan satu konstruktor bergerak murah, atau tidak melakukan apa-apa?

Realitas baru

Sekarang saatnya untuk mempertimbangkan apa yang telah berubah dalam C ++ 17 tentang PC. Semua perubahan, bagian dari mana dan apa yang akan kita bahas di bagian ini dapat ditemukan dalam kalimat asli P0135R1. Jika Anda melihat dokumen ini, Anda akan melihat bahwa ia menjelaskan banyak pengeditan standar dalam hal kategori ekspresi (sampai batas yang lebih besar prvalue.), serta berbagai edik mengklarifikasi ke mana harus melakukan secara eksplisit lurus (Langsung-) dan salinan (Salin-) inisialisasi. Kita berasal dari semua set ini hanya satu perubahan, yang dijelaskan dalam STMT.RETURNN / P2.

Jadi, menurut inovasi di atas, kembali dari fungsi objek tanpa nama sementara (prvalue) dari jenis yang sama (yaitu, tidak diperlukan konversi), karena jenis fungsi yang dikembalikan, melakukan inisialisasi penyalinan hasil (yang menurut ke dcl.init / p (17.6. 1) memungkinkan Anda untuk melewati penyalinan). Ditulis dalam kalimat di atas adalah, pada dasarnya, ovi yang sama, hanya kali ini wajib. Itu. Jika dalam C ++ 14 kompiler bisa singkirkan salin / bergerak dalam hal ini sekarang dia harus lakukan. Apa yang memberi kita, karena kita telah melihat bahwa kompiler dan dengan sempurna mengatasi dengan baik? Dan memberi kita ini selanjutnya, memiliki kode seperti itu:

Someclass Mereturn () (Return Someclass ();)

Kami tidak dapat memiliki konstruktor penyalinan dan memindahkan sama sekali, dan masih akan dikompilasi. Penting untuk dicatat bahwa hanya kasus yang telah berubah ketika objek lain dibuat dari objek yang tidak disebutkan namanya sementara, jika kita mengembalikan objek bernama (Oivz), bahkan jika kompiler dapat melewati penyalinan, kehadiran desainer yang sesuai diperlukan.

Ada satu poin lagi yang sudah dikaitkan dengan transfer argumen, dan tidak dikembalikan nilai. Jika kita memiliki kode ini:

Void meacccccept ([] SOMECLASS S) ()

Ketika Anda memanggil fungsi MeAccccept (SomesClass ()), akan ada juga tidak ada salinan lagi dan itu tidak lagi optimasi lagi, tetapi persyaratan standar. Ini disebabkan oleh perubahan definisi Prvalue (Basic.lval) dan oleh fakta bahwa perubahan ini terlibat. Mari kita lihat baris ini: meaCept (Someclass ()). Jika kita berbicara dalam hal prvalue lama, maka Someclass () adalah objek sementara, yang kemudian disalin ke parameter fungsi. Tetapi definisi baru tentang prvalue adalah bahwa itu tidak lagi sebuah Objek, tetapi ekspresi, perhitungannya adalah inisialisasi objek. Apa artinya ini untuk kita? Ini berarti bahwa dalam ekspresi kami yang dipertimbangkan, Someclass () bukan objek sementara, tetapi ekspresi inisialisasi parameter fungsi. Di sini, sudah disebutkan oleh kami yang sebelumnya dijelaskan dalam dcl.init / p (17.6.1), dan tidak ada penyalinan yang terjadi - inisialisasi dilakukan secara langsung.

Pada pandangan pertama, ini adalah inovasi yang agak kecil, karena hal yang sama terjadi sebelumnya, hanya kompiler yang tidak berkewajiban untuk melakukan itu. Namun demikian, inovasi ini mengubah esensi dari konsep prvalue, sehingga tidak sepadan untuk sedikit. Ya, dan dari sudut pandang praktis murni, perlu untuk mengetahui tentang perubahan ini, karena ketika mempelajari bahasa, kita akan mempelajarinya secara empiris, dan dalam proses ini, eksperimen dengan konstruktor penyalinan / pemindahan sangat sering ditemukan. Jadi, dimulai dengan C ++ 17, Anda tidak dapat memaksa kompiler untuk membuat salinan dalam contoh yang dijelaskan sebelumnya. Tidak ada bendera yang akan membantu jika program dikompilasi untuk C ++ 17, dan kompiler benar-benar mendukungnya. Adapun kode kasual, inovasi ini memungkinkan Anda untuk membuat fungsi pabrik yang mengembalikan objek yang tidak memiliki desainer salinan / perpindahan. Berapa yang dibutuhkan? Waktu akan berbicara.

Lambda.

Komite terus menunjukkan lambdam cintanya, saya menambahkan sesuatu yang baru kepada mereka dalam setiap edisi baru standar. 2017 tidak terkecuali, dan Lambda menerima porsi inovasi mereka. Meskipun saya terus menunggu sintaksis pendek (seperti c # satu x \u003d\u003e x) dan saya menganggap inovasi standar ini tidak signifikan, saya masih tidak bisa mengatasinya.

Menangkap ini

Jadi, inovasi adalah yang pertama. Sekarang daftar tangkapan dapat ditransmisikan salinan objek menggunakan pointer ini. Sebelum C ++ 17, jika kami ingin mentransfer salinan objek saat ini di lambda, kami dipaksa untuk menulis sesuatu seperti itu:

#Include. Menggunakan namespace std; Kelas SOMECLASS (PUBLIK: SOMECLASS (Nilai Ukuran): M_Value (Nilai) Void Somemethod () (Auto Lambda \u003d [_This \u003d * Ini] (untuk (size_t i \u003d 0; i;< _this.m_Value; ++i) cout << "This is lambda!!!\n"; }; lambda(); } private: size_t m_Value; }; int main() { SomeClass some{3}; some.someMethod(); };

Kerugian utama dari pendekatan ini adalah kebutuhan untuk secara eksplisit menentukan nama objek di mana kami menyalin * ini, dengan setiap banding untuk itu. C ++ 17 mengoreksi kelemahan ini, memungkinkan Anda untuk menulis seperti ini:

Auto lambda \u003d [* ini] (untuk (size_t i \u003d 0; i< m_Value; ++i) cout << "This is lambda!!!\n"; };

Itu. Akses ke keanggotaan objek dilakukan dengan cara yang persis sama seperti jika kami membuat lambda dengan daftar penangkapan, tetapi pada lambda tidak ada objek saat ini (mis. Indikator ini), dan salinannya. Saya ingin mencatat bahwa saya tidak perlu menulis kode seperti itu, jadi sulit bagi saya untuk menilai kegunaan inovasi, tetapi seseorang akan dengan jelas menjadi lebih mudah. Saya hanya bisa bersukacita untuk mereka dan pergi ke inovasi berikutnya.

Perlu lebih konstan!

Perubahan lain yang menyarankan sejak lama, ini adalah penambahan penggunaan lambd dalam ekspresi konstan. Tentu saja, lambdes semacam itu juga harus konstan. Sebagai contoh:

Auto eleven \u003d (kembali 11;); Himpunan. Arr;

Seperti yang Anda lihat, definisi lambda tidak berubah, tetapi panggilannya digunakan dalam konteks, di mana perlu menggunakan konstanta waktu kompilasi. Karena Kode ini berhasil dikompilasi, setiap programmer yang penuh perhatian dapat membuat kesimpulan berikut: Kelas Operator () yang dihasilkan dari Lambda, adalah anggota konstelpr dan kesimpulan ini, tidak diragukan lagi setia. Dimulai dengan C ++ 17, semua ekspresi lambda adalah Constexpr, sedangkan ke C ++ 17 mereka hanyalah Const. Tetapi mereka akan dikurangi menjadi const, jika tubuh fungsi lambda tidak sesuai dengan setidaknya satu kriteria, yang tunduk pada semua fungsi Constexpr (kriteria dijelaskan dalam DCL.CONSTEXPR). Buat perubahan minimal dalam kode kami, dan lambda akan berhenti menjadi Constexpr:

Auto eleven \u003d (int x; kembali 11;);

Dengan kode lambda dari membuat array akan memberikan kesalahan kompilasi (yang pada kenyataannya, dicari), tetapi penciptaan kesalahan lambda tidak akan memberi. Namun, kita dapat memutar kacang dan permintaan dari lambda untuk memiliki tubuh yang diajukan ke aturan yang disebutkan di atas:

Auto eleven \u003d () constexpr (int x; return 11;);

Harap perhatikan bahwa kami harus menambahkan ConstExpr dan () yang jelas, yang tidak membawa beban fungsional apa pun dan hanya berfungsi hanya yang paling mirip dengan standar. Dengan demikian, kita dapat membuat fungsi lambda yang dijamin dapat digunakan dalam konteks konservasi.

Perubahan ini telah lama difasilitasi, dan tidak boleh bagi siapa pun yang mengejutkan: Fungsi sederhana dapat berupa Constexpr, fungsi anggota - juga, apa yang Lambda lebih buruk? Berapa kebutuhan Constexpr Lambda? Ini lebih menarik. Saya pikir mereka membutuhkan kode Consexpr sebanyak mereka membutuhkan kode sederhana. Sekarang C ++ diamati oleh Constexpr Boom: Orang-orang bersaing yang akan melangkah lebih jauh dalam transfer pekerjaan dari waktu eksekusi selama kompilasi.

Mereka mencapai penulisan parser JSON dan bahkan sebelum eksekusi ekspresi reguler (yang tertarik, lihat video dengan CPPCON2017: "Constexpr semua hal!"). Selain itu, ada lebih banyak algoritma standar (dan tidak terlalu) menjadi Constexpr, yang menghasilkan penggunaan lambd yang paling jelas, karena mereka hanya dibuat untuk algoritma. Oleh karena itu, menurut pendapat saya, menambahkan Constexpr adalah langkah maju yang baik, yang akan memungkinkan penulisan lebih banyak kode yang akan dieksekusi selama kompilasi.

Di sisi lain, apakah kita benar-benar membutuhkan banyak hal untuk ditransfer ke tahap kompilasi? Tentu saja, ketika sesuatu dapat ditransfer dari beberapa versi dinamis, pada satu eksekusi selama kompilasi adalah plus yang pasti. Atau tidak? Itu tergantung pada tugas dan manfaat yang kita dapatkan selama eksekusi. Biarkan kita menulis Parser JSON, yang mengkonsumsi massa RAM dan meningkatkan waktu kompilasi (lihat setidaknya 3 menit terakhir dari video tersebut), apa yang diberikannya kepada kita? Ya, sekarang kita dapat membongkar konfigurasi selama kompilasi dan menggunakannya dalam kode. Tetapi kita dapat melakukannya sebelumnya, tanpa menggunakan JSON, dan ini juga akan menjadi beban nol pada saat eksekusi (hanya satu set flag dalam judul, misalnya). Itu mengingatkan saya pada lelucon berjanggut:

Dua teman ditemukan:

- Saya mendengar di sini, apakah Anda membeli mobil?

- Iya! Dan bagaimana saya dulu hidup! Sekarang semuanya sudah waktunya! Kemarin, sehari saya berhasil mengganti minyak, membeli ban baru, pergi ke pasar mobil di belakang sayap, segera pergi ke layanan mobil dan mengubahnya, dan saya juga pergi ke toko untuk non-beku. Dan bagaimana saya akan punya waktu tanpa mobil?!

Saya mungkin berdebat, kata mereka, JSON lebih nyaman. Biarlah. Kemudian mari kita tambahkan skrip pada python yang sama (atau umumnya cmake), yang akan dihasilkan kepada kami untuk menghasilkan objek konfigurasi dari JSON. Ya, kita harus menambahkan satu langkah lagi ke arah perakitan proyek kita, tetapi apakah lebih sulit untuk menulis kode pada C ++, yang membongkar JSON? Ya, dan tidak ada yang membatalkan waktu kompilasi (dan saya menganggap alasan ini jauh lebih substansial): Jika kode dikompilasi untuk waktu yang lama, maka pengembangan akan berubah menjadi neraka. Oleh karena itu, saya benar-benar tidak melihat makna dalam transfer hal-hal kompleks pada Constexpr Rails. Menurut pendapat saya, ini adalah komplikasi tambahan yang dapat ditampilkan di konferensi, tetapi sama sekali tidak perlu dalam kode nyata. Penggunaan perhitungan selama kompilasi harus dibenarkan, dan bukan hanya karena "Kita bisa sekarang!".

Dua paragraf terakhir dapat memberikan gagasan yang salah tentang sikap saya terhadap inovasi ini: Saya tidak menentangnya, saya hanya menentang menyumbat paku dengan mikroskop, itu saja. Contoh yang terakhir terlihat jelas dalam video dengan CPPCCON, tetapi penampilan Constexpr Lambd, tentu saja, kabar baik, karena lambda, secara fungsional, tidak boleh berbeda dari fungsi biasa - mereka harus memiliki semua fitur yang sama,. Dan jika memori bukan saya berubah, itu tetap menambahkan hanya satu hal: bernama template parameter untuk lambd. Menunggu mereka di C ++ 20?

Dalam situasi yang tidak dapat dipahami, tenang, tertinggal, berburu diri sendiri, pergi makan makanan ringan. Jaga keberanian :)

Tinggalkan kesalahan masa lalu.

Hargai masa kini.

Senyum masa depan)

Segera setelah mereka melepaskan situasi yang cocok dengan Anda, segera situasinya akan membiarkan Anda pergi.




Jangan keluar dari dirimu. Tidak diketahui apa yang bisa terjadi dalam ketidakhadiran Anda.

Datang ke pohon. Biarkan itu mengajarkan Anda ketenangan.

- Apa rahasia ketenanganmu?

"Secara penuh dengan yang tak terhindarkan," jawab tuan itu menjawab.

Pindahkan pesanan dalam pikiran - dan Anda akan melihat dunia dengan mata lainnya.

Hati jangan lupa untuk membersihkan.

Apa kedamaian?

Kurangnya pikiran yang tidak perlu.

Dan pikiran apa yang tidak perlu?

(Wei de-han)

Yang paling penting adalah harta Anda adalah dunia di kamar mandi.

Chamomile menenangkan.

Kelola suasana hati Anda, untuk itu, jika tidak mematuhi, maka perintah.


Anda dapat menemukan kedamaian pikiran, hanya menjadi pengamat, dengan tenang mendistribukkankan untuk menjalani kehidupan yang mimoled. Irwin yal.



Tenang lebih kuat dari emosi.

Diam - jeritan lebih keras.

Dan apa yang akan terjadi pada Anda - jangan mengambil apa pun ke hati. Sedikit di dunia ini penting untuk waktu yang lama.

Erich Maria mengandalkan "kemenangan lengkungan" ---

Mendapatkan di bawah hujan, Anda dapat mengekstrak pelajaran yang bermanfaat dari ini. Jika hujan mulai tiba-tiba, Anda tidak ingin basah dan berjalan di jalan ke rumah Anda. Tetapi mencurahkan ke rumah, Anda perhatikan bahwa masih basah. Jika Anda memutuskan sejak awal tidak mempercepat langkah, Anda akan mempromosikan, tetapi Anda tidak akan repot. Anda juga perlu bertindak dalam keadaan serupa lainnya.

Yamamoto Tsungomo - Hagakure. Buku Samurai.



Besok akan menjadi apa yang seharusnya

dan tidak akan ada apa pun yang seharusnya -

jangan kerepotan.

Jika tidak ada dunia di dalam diri kita, tidak ada gunanya mencarinya di luar.

Tidak terbebani dengan masalah -
menikmati hidup.
Jangan bersukacita,
kehilangan tidak akan sedih karena dia tahu
nasib itu tidak konstan.
Ketika kita tidak berhubungan
solne tahu ketenangan.
Jika tubuh tidak beristirahat dari tegangan,
itu aus.
Jika Roh selamanya menjadi perhatian,
dia memudar.

Zhuang Tzu ---

Jika Anda melempar tongkat seekor anjing, dia akan melihat tongkat ini. Dan jika Anda melemparkan tongkat singa, maka itu akan, tanpa mogok, lihat terlempar. Ini adalah frasa formal, yang diberitahu selama perselisihan di Cina kuno, jika para lawan bicara mulai berpegang teguh pada kata-kata dan berhenti melihat hal utama.

Melakukan napas, saya menenangkan tubuh dan pikiran saya.
Melakukan menghembuskan napas, saya tersenyum.
Tetap hadir, saya tahu bahwa saat ini luar biasa!

Biarkan saya bernapas penuh payudara dan jangan mengarahkan diri ke bingkai.

Kekuatan orang yang percaya pada kekuatannya.

Cari kebiasaan memantau keadaan mental-emosional Anda dengan pengawasan diri. Untuk secara teratur bertanya pada diri sendiri: "Apakah saya tenang saat ini?" - Ini adalah pertanyaan yang berguna untuk secara teratur bertanya pada diri sendiri. Anda masih bisa bertanya: "Apa yang terjadi pada saya saat ini?"

Eckhart Tollet.

Kebebasan adalah kebebasan dari kekhawatiran. Menyadari bahwa Anda tidak dapat mempengaruhi hasilnya, jangan memperhatikan keinginan dan ketakutan Anda. Biarkan mereka datang dan pergi. Jangan memberi mereka minat dan perhatian. Bahkan, hal-hal dilakukan dengan Anda, bukan oleh Anda.

Nisargadatta Maharaj.


Orang yang lebih tenang dan seimbang, semakin kuat potensinya dan semakin besar keberhasilannya dalam hal-hal yang baik dan layak. Keterkiraan pikiran adalah salah satu harta kebijaksanaan terbesar.


Dasar dari semua kebijaksanaan adalah tenang dan kesabaran.

Hentikan kecemasan Anda dan kemudian Anda dapat melihat pola yang luar biasa ...

Ketika pikiran datang ke perdamaian, Anda mulai menghargai cahaya bulan dan angin angin dan Anda mengerti bahwa tidak perlu untuk kebutuhan duniawi.

Lakukan kedamaian dalam jiwa Anda, dan di sekitar Anda akan diselamatkan.

Bahkan, Anda hanya ingin kedamaian dan cinta. Dari jumlah tersebut, Anda keluar, Anda akan kembali kepada mereka dan mereka. Papadzhi.


Orang-orang yang paling cantik dan sehat adalah yang orang-orangnya tidak menjengkelkan.


Tingkat kebijaksanaan manusia tertinggi adalah kemampuan untuk menjaga ketenangan bertentangan dengan badai eksternal.



Anda tidak terhubung dengan pengalaman kami, tetapi apa yang memanjatnya.

Jangan mengambil solusi bicara. Nah menangguhkan semua "untuk" dan "menentang". Hampir setiap orang memiliki panduan surgawi, "I" yang kedua. Pikirkan dan tanyakan kepadanya, dan apakah itu harus dilakukan atau tidak?! Belajar mengamati, lihat Terlihat, meramalkan situasi.

Ketika kita merenungkan hutan gunung dan kekuatan yang lebih kuat, jantung, terinspirasi oleh lumpur duniawi, secara bertahap dibersihkan. Ketika Anda membaca di kanon kuno dan melihat foto-foto master lama, semangat vulgar duniawi tidak cukup. Hong Zychen, rasa akarnya.


Kebijaksanaan datang dengan kemampuan untuk tenang. Lihat saja dan dengarkan. Tidak ada yang lebih banyak kebutuhan. Ketika Anda sendirian, ketika Anda hanya melihat dan mendengarkan, itu mengaktifkan di dalam Anda bebas dari konsep rasionalitas. Biarkan perdamaian mengarahkan kata-kata dan hal-hal Anda.

Eckhart Tollet.


Kita tidak akan pernah bisa mencapai ketenangan pikiran di dunia luar sampai mereka berhasil dalam batin.

Esensi keseimbangan bukan untuk berpegang teguh.

Esensi relaksasi adalah tidak ditahan.

Inti dari naturaless bukan untuk berupaya.

Orang yang tidak menikmati dan ada yang mau jahat, mencapai keseimbangan. Baginya, seluruh dunia dipenuhi dengan kebahagiaan.

Sehingga lagi kehidupan mekar, Clowd dan dipenuhi dengan sukacita dan kebahagiaan yang menarik, Anda hanya perlu berhenti ... Berhenti dan mampu larut dalam kesenangan ...

Jangan khawatir tentang masa depan Anda, sendirian sekarang, dan semuanya akan jatuh ke tempatnya.

Jika airnya tidak disiksa, dengan sendirinya akan hilang. Jika cermin itu tidak kotor, itu sendiri akan mencerminkan cahaya. Hati manusia tidak bisa dilakukan bersih. Hilangkan apa yang ia contaminasi, dan kemurniannya sendiri akan memanifestasikan dirinya. Sukacita tidak perlu mencari sendiri. Hilangkan perhatian apa yang memberi Anda, dan kegembiraan itu sendiri akan bereaksi di jiwa Anda.


Terkadang hanya meninggalkan sendirian ...

Di tengah badai selalu sepi. Jadilah tempat yang tenang di tengah, bahkan jika vortisnya mengamuk.

Kamu adalah langit. Segala sesuatu yang lain hanyalah cuaca.

Hanya di perairan yang tenang, hal-hal tercermin dalam undischarged.

Hanya kesadaran tenang yang cocok untuk persepsi dunia.

Ketika Anda tidak tahu harus berbuat apa, - Tunggu sebentar. Menyembunyikan. Hidup seperti hidup. Tanda akan cepat atau lambat muncul. Yang utama adalah mengetahui bahwa Anda sedang menunggu dan siap untuk bertemu dengan apa yang Anda tunggu. Louis Rivera.

Jangan khawatir tentang masa depan Anda, sendirian sekarang, dan semuanya akan jatuh ke tempatnya.


Tenang merampasmu dari musuhmu. Dalam damai tidak ada rasa takut atau kemarahan yang berlebihan - hanya kenyataan, dimurnikan dari distorsi dan campur tangan ledakan emosional. Ketika Anda tenang - Anda benar-benar kuat.

Oleh karena itu, lawan Anda akan selalu mencoba membawa Anda keluar dari negara ini - untuk menginspirasi ketakutan, menabur keraguan, menyebabkan kemarahan. Keadaan internal terhubung langsung dengan pernapasan. Situasi apa yang akan Anda pukul, segera menenangkan napas Anda - Roh tenang berikutnya.


Hal utama dalam kehidupan spiritual adalah menjaga hati di dunia.

Perlu mempercayai kehidupan.
Tak perlu mempercayakan alirannya tanpa rasa takut, karena hidup ini jauh lebih bijaksana.
Dia masih akan membebani Anda dengan caranya sendiri, kadang-kadang cukup keras,
tetapi pada akhirnya Anda akan mengerti bahwa itu benar.

Sendiri sekarang, dan semuanya akan jatuh ke tempatnya.

Roh Anda seharusnya tidak khawatir, kata-kata jahat seharusnya tidak mematahkan bibir Anda; Anda harus tetap baik hati, dengan hati, cinta penuh yang tidak mengandung kedengkian rahasia; Dan bahkan disiksa, Anda harus membahas dengan kekasih, pikiran yang murah hati, mendalam dan tanpa batas, dimurnikan dari semua kemarahan dan kebencian. Itulah cara para murid saya harus bertindak.

Hanya air yang tenang yang dengan benar mencerminkan surga.

Indikator terbaik dari tingkat kesadaran adalah kemampuan untuk bersantai dalam kesulitan vital.

Pria tak dikenal yang mereka tarik ke bawah, sementara orang yang sadar semakin memanjat.

Eckhart Tolna.


Duduk dengan tenang, dan Anda akan mengerti betapa kuatnya perawatan kasual. Maaf sedikit dan Anda akan mengerti seberapa kosong pidato sehari-hari. Maafkan kerumitan biasa, dan Anda akan mengerti berapa banyak kekuatan orang yang menyipitkan sia-sia. Chen Jizhu.


Tenang membantu kita menemukan jalan keluar dari situasi yang paling sulit.

Aku meledak kesabaran? ... aku pengaruh lagi!)

3 tenang detik

Pikirkan cukup tenang sekitar tiga detik untuk memahami segalanya.

Tapi di mana harus mengambilnya, ini benar-benar tiga detik tenang? Kami terlalu bersemangat dengan fantasi kami sendiri untuk tinggal setidaknya sebentar lagi.


Pernahkah Anda melihat pohon ek dalam keadaan stres atau lumba-lumba, tetap dalam pengaturan roh yang suram, katak menderita harga diri yang rendah, kucing, yang tidak bisa rileks atau burung itu terbebani oleh serangan itu? Saya akan belajar dari kemampuan mereka untuk tahan dengan saat ini.
Eckhart Tollet.

Jangan terburu-buru. Setiap kuncup berkedip pada satu waktu. Jangan memaksa kuncup untuk menjadi bunga. Jangan melenturkan kelopak. Mereka lembut; Anda akan menuangkannya. Tunggu dan mereka akan mengungkapkan diri mereka sendiri. Sri Sri Ravi Shankar

Jangan menyembah seorang pria berjanggut di langit atau berhala dalam buku ini. Menyembah menghirup dan menghembuskan napas, angin musim dingin membelai wajahmu, kerumunan pagi orang-orang di kereta bawah tanah, hanya merasa hidup, tidak pernah tahu apa yang akan terjadi.Perhatikan Tuhan di mata orang asing, Providence in hancur dan biasa. Menyembah Bumi di mana Anda berdiri. Buat setiap hari tarian, dengan air mata di mataku, merenungkan ilahi kapan saja, perhatikan mutlak dalam segala hal relatif, dan biarkan orang memanggilmu gila. Biarkan mereka tertawa dan reli.

Jeff Foster

Kekuatan tertinggi bukanlah kemampuan untuk mengalahkan orang lain, dan kemampuan untuk menjadi satu dengan orang lain.

Sri Chinmi.

Cobalah, setidaknya dalam kecil, jangan membawa pikiran Anda.
Lihatlah dunia - lihat saja.
Jangan katakan "suka", "Jangan suka". Jangan katakan apapun.
Jangan mengucapkan kata-kata, lihat saja.
Pikiran akan merasakan ketidaknyamanan.
Pikiran ingin mengatakan apa-apa.
Anda hanya mengatakan pikiran:
"Diam, biarkan aku melihat, aku hanya akan melihat" ...

6 Soviet bijak dari Chen Jizh

1. Duduk dengan tenang, dan Anda akan mengerti betapa kuatnya perhatiannya.
2. Maaf sedikit dan Anda akan mengerti seberapa kosong pidato sehari-hari.
3. Maafkan kerumitan biasa, dan Anda akan mengerti berapa banyak kekuatan orang yang menyipitkan sia-sia.
4. Cakar gerbang Anda, dan Anda akan memahami bagaimana ikatan dating dating.
5. Saya memiliki sedikit keinginan, dan Anda akan mengerti mengapa banyak penyakit pada umat manusia begitu banyak.
6. Bersikaplah manusiawi, dan Anda akan memahami betapa tidak berjiwa orang biasa.

Bebaskan pikiran Anda dari pikiran.
Biarkan hatimu tenang.
Dengan tenang menonton dunia kekacauan
Tonton bagaimana semuanya jatuh ke tempatnya ...

Orang yang bahagia sangat mudah untuk mengetahuinya. Dia tampaknya memancarkan aura tenang dan kehangatan, bergerak perlahan, tetapi dia punya waktu di mana-mana, berbicara dengan tenang, tetapi semua orang mengerti dia. Rahasia orang-orang bahagia itu sederhana adalah kurangnya ketegangan.

Jika Anda duduk di suatu tempat di Himalaya dan keheningan mengelilingi Anda - ini adalah keheningan Himalaya, bukan milik Anda. Anda harus menemukan Himalaya Anda sendiri di dalam ...

Luka yang disebabkan oleh pikiran, sembuh lebih lama dari yang lain.

Joan Rowling, "Harry Potter dan Ordo Phoenix"

Kebijaksanaan datang dengan kemampuan untuk tenang.Lihat saja dan dengarkan. Tidak ada yang lebih banyak kebutuhan. Ketika Anda sendirian, ketika Anda hanya melihat dan mendengarkan, itu mengaktifkan di dalam Anda bebas dari konsep rasionalitas. Biarkan perdamaian mengarahkan kata-kata dan hal-hal Anda.

Eckhart Tolle "Keheningan apa yang dikatakan"

Orang yang lebih tenang dan seimbang, semakin kuat potensinya dan semakin besar keberhasilannya dalam hal-hal yang baik dan layak. Keterkiraan pikiran adalah salah satu harta kebijaksanaan terbesar.

James Allen.

Ketika Anda hidup dengan persetujuan Anda, Anda dapat bergaul dengan orang lain.

Kebijaksanaan Timur -

Duduk - dan duduklah sendiri; Anda pergi - dan pergi sendiri.
Hal utama - jangan repot di belakang.

Ubah sikap terhadap hal-hal yang Anda khawatirkan, dan Anda akan aman dari mereka. (Mark Azeri)

Pindahkan perhatian pada Solar Plexus. Cobalah membayangkan bahwa sinar matahari kecil menyala di dalam dirimu. Biarkan dia menyala, menjadi lebih dan lebih kuat. Biarkan sinar-Nya sakit. Biarkan matahari memperkuat seluruh tubuh dengan sinar.

Harmony adalah kerataan dalam segala hal. Jika Anda ingin bertengkar, ambil hingga 10 dan "jalankan" matahari.

Tenang, hanya tenang :)

Tertarik pada apa yang terjadi di dalam diri Anda, tidak kurang dari apa yang mengelilingi Anda. Jika di dunia dalam, semuanya beres, maka di luar semuanya akan jatuh pada tempatnya.

Tol eckhart ---

Bodoh dan Ignoramus memiliki lima akan mengambil:
malu tidak ada alasan
berbicara tanpa perlu
berubah tidak diketahui untuk apa
mengganggu fakta bahwa mereka tidak peduli
dan mereka tidak tahu bagaimana membedakan siapa yang ingin mereka dengan baik dan siapa yang jahat.

Pepatah India ---

Apa daunnya, biarkan dia pergi.
Apa yang terjadi, biarkan itu datang.
Anda tidak memiliki apa-apa dan tidak pernah, kecuali diri Anda sendiri.

Jika Anda bisa menyimpan keheningan internal, tidak terkontaminasi dengan ingatan dan harapan, Anda bisa melihat pola peristiwa yang luar biasa. Ini adalah kecemasan Anda menciptakan kekacauan.

Nisargadatta Maharaj ---

Hanya ada satu cara untuk kebahagiaan - ini adalah penghentian kecemasan tentang hal-hal yang tidak pada kekuatan kehendak kita.

Epicate ---

Setelah kehilangan akal sehat mereka sendiri, kita menjadi kebal.

Agar kuat, Anda harus seperti air. Tidak ada hambatan - dia mengalir; Bendungan - dia akan berhenti; Bendungan akan menerobos - dia akan mengalir lagi; Dalam kapal empat derajat, itu adalah kuadrigilane; Berputar - dia telah membulat. Karena dia sangat patuh, kemungkinan besar dan sebagian besar.

Dunia ini mirip dengan stasiun, di mana kita selamanya kita menunggu, maka kita bergegas.

Ketika pikiran dan perasaan Anda memperlambat langkah mereka sebelum detak jantung, Anda secara spontan memasuki harmoni dengan irama kosmik. Anda mulai memandang dunia dengan mata ilahi, menonton semuanya terjadi dalam dirinya sendiri dan pada satu waktu. Setelah menemukan bahwa semuanya sudah berkorestasi dengan hukum alam semesta, Anda memahami bahwa Anda tidak berbeda dengan dunia dan tuan-tuannya. Ini kebebasan. Muga

Kami terlalu khawatir. Terlalu serius merasakan. Perlu untuk mendaftar ke segala sesuatu yang lebih mudah. Tetapi dengan pikiran. Tanpa saraf. Hal utama untuk dipikirkan. Dan jangan lakukan omong kosong.

Apa yang dapat Anda anggap dengan tenang tidak lagi mengelola Anda ...

Tidak ada tempat untuk menemukan kedamaian seseorang yang tidak menemukannya sendiri.

Menjadi marah dan kesal - tidak ada yang menghukum diri sendiri karena kebodohan lainnya.

Kamu adalah langit. Dan awan adalah apa yang terjadi, datang dan pergi.

Eckhart Tollet.

Hidup, menjaga kedamaian. Ayo musim semi, dan bunga mekar sendiri.


Diketahui bahwa pria itu terlihat seperti, semakin sedikit orang lain bertentangan dengannya dan berdebat dengannya. Sebaliknya, jika seseorang mempertahankan sudut pandangnya dengan panas, ia diperdebatkan dan keras untuk melawan.

Jangan terburu-buru. Makan selama satu jam makanan, dan jam akan datang- Pergi di jalan.

Paulo Coelho "Alchemist"

Simpan - itu berarti menerima apa itu. Jadi Anda terbuka untuk hidup. Resistance adalah penjepit batin .... Jadi Anda benar-benar tertutup. Apa yang akan Anda lakukan dalam keadaan resistansi internal (yang juga dapat disebut negativitas), itu akan menyebabkan resistansi eksternal yang lebih besar, dan alam semesta tidak akan ada di pihak Anda, hidup tidak akan membantu Anda. Cahaya tidak dapat menembus di dalam melalui daun jendela tertutup. Ketika Anda secara internal inferior dan menghentikan perjuangan, pengukuran kesadaran baru dibuka. Jika tindakan itu mungkin ... itu akan tercapai ... didukung oleh pikiran kreatif ... yang dengannya Anda menjadi satu dalam keadaan keterbukaan internal. Dan kemudian keadaan dan orang-orang mulai membantu Anda, menjadi bersama Anda pada saat yang sama. Kebetulan bahagia terjadi. Semuanya menambah keinginan Anda. Jika tindakan itu tidak mungkin, Anda berada dalam perdamaian dan kedamaian batin, yang datang dengan penolakan untuk bertarung.

Eckhart Tolna New Earth

Banding "Tenang" untuk beberapa alasan itu selalu menjengkelkan.Paradoks lain.Biasanya setelah panggilan seperti itutidak ada yang berpikir tenang.

Bernard Verber Mirror Cassandra

Siapa pun yang merendahkan dirinya, dia mengalahkan musuh.

Siluan Athos.

Jelas orang yang menjaga Tuhan dalam dirinya sendiri.


Ketika Anda berdebat dengan orang bodoh, kemungkinan besar melakukan hal yang sama.

Kekuatan manusia yang sebenarnya tidak ada di hembusan, tetapi dalam ketenangan pikiran yang tidak teratur.

Tingkat kebijaksanaan manusia tertinggi adalah kemampuan untuk beradaptasi dengan keadaan dan tetap tenang bertentangan dengan badai eksternal.

Perasaan dan pikiran pikiran akan hilang, jika Anda tidak memperhatikannya. Lama Ola Nidal.

Anda tidak akan pernah menyesali apa yang berhasil mereka robek.
--- Kebijaksanaan Timur ---

Perlu berjuang untuk keadaan kesadaran di mana semua peristiwa akan dianggap netral.