Идеология языка — различия между версиями

Материал из Deeptown Manual
Перейти к: навигация, поиск
(She is dressed in that gorgeous dress http://faemmastonehotig.tumblr.com emma stone fakes that underlines her perfect figure like thighs, ass and of course her thin waist. With some great pleasure I a)
 
(не показаны 175 промежуточных версий 8 участников)
Строка 1: Строка 1:
No, of course I am not any http://jqkatyperrynude2e.tumblr.com katy perry topless of these things because I take five minutes break after every time I cumm. She stands and exposes in her brownie lingerie and showing us http://haibrowvoisub1975.inube.com click here some nice view on her tits and pants. I know some of them are fakes but you shouldn't ignore them too http://ixladygagasex20.tumblr.com watch there as the most interesting thing about them is that at least one of them will reflect Taylor the way you imagined her naked. As you can http://reparishiltonsexvc.tumblr.com paris hilton nake photos see this Rachel McAdams nude picture that I have found for you it is not hard to guess who about this review is going to be. No matter what you like the most about our guest today, I think you should http://centwoolblakan1975.inube.com alyson hannigan nude said that in your comments. There are three girls on http://msbritneyspearspussy38.tumblr.com britney spears tits that picture and they're holding books or something. His wife is upstairs so he runs in his house slams the door and screams Honey, pack you back, I have just one two million dollars http://chrisicunren1977.inube.com lucy lawless nake photos in lottery. I don't think that some http://bzdakotafanningnudesw.tumblr.com dakota fanning fakes of these pictures of Kellie Pickler nude will change your life but one thing they can do for real. That would be all for today so don't miss watching Kendra Wilkinson naked pictures because that would be http://mptaylorlautnernude14.tumblr.com taylor lautner naked pictures lame. But on the other hand http://enbrookeshieldsnudeh8.tumblr.com brooke shields sex tape we got this jealousy stuff along with some setups and other unpleasant things. Yeah, I can totally agree that this feeling is great but when http://unuvmowyrm1983.inube.com natalie portman boobs you're working it is only bothering you and it is kind of complicated to do what you have got to do besides jerking off. By the way, have you watched Fatwa? This is another low http://k0kimkardashianporn2g.tumblr.com kim kardashian hot pics budget movie with some erotic scenes. You don't want to be one of those looser that can't http://cyscherere1981.inube.com jennifer aniston naked pictures find a damn pic of her, don't you? she was casting in many movies like Shrink, Summer's Blood, Crossing Jordan Desire and http://eoparishiltonpornzd.tumblr.com paris hilton naked many others.
+
== Немного теории о языках программирования  ==
  
And Sally was playing there a waitress that came to him and offered to order this http://difpaygroodem1984.inube.com http://difpaygroodem1984.inube.com soup. Now let's go to the part where I have included couple of movies with Jenny McCarthy nude scenes http://8fsuzannesomersnudeos.tumblr.com http://8fsuzannesomersnudeos.tumblr.com and not just that. Anyway, I do believe in that she is pretty nice woman who is 31 years old http://keygdalhesso1970.inube.com watch there and she looks on about 25 or something. I saw about ten pictures of Jenna Fischer nude and that was actually enough for me to be in loved with that http://franlimonttic1979.inube.com emma watson bush woman. Call me http://laymomasa1981.inube.com http://laymomasa1981.inube.com crazy but this is what I feel and there is nothing that would change my mind. It is just I wanted you to know that those boys are not just taken from streets as they are truly shapely and http://qkpamelaandersonhot28.tumblr.com pamela anderson playboy athletic nice looking man. I wonder who is that http://tmatwebnoli1979.inube.com http://tmatwebnoli1979.inube.com actor who played her partner on sex scene? He is the luckiest bastard I have met. You may have noticed that there is this big funny shaped like a banana armchair, right? And http://podthetadi1974.inube.com kate upton playboy on this armchair you should notice Flona lying in her panties and watching tv. That's why when I saw Keisha on that kind of photo, my first thought was that Now, you just have to masturbate on it pal, this is your chance http://lorbwinebeds1970.inube.com go here so don't blow it. Those things shouldn't be said at all because this only makes women weaker than they http://oxrihannasextapei5.tumblr.com rihanna nipple slip are. Besides, she is taking care of her health so nicely that I bet no other woman http://rfparishiltonpussyo5.tumblr.com paris hilton boobs can look like this by this age. First of all you have to see http://moblakelivelynackt8q.tumblr.com blake lively naked pictures some real photos of her and visually check her boobs' size through her shirt.
+
В этой главе мы кратко рассмотрим основные понятия, касающиеся языков программирования, а также попробуем классифицировать язык К++ с позиции этих понятий.
  
I wish we could see some recently http://plusrasiwa1989.inube.com marilyn monroe nude pictures take pictures of Jennifer Aniston nude and it would be very generous from her side to do that. I guess that phrase a bit higher should have been the last one in this review, but then I realized that I haven't made to http://udamberheardsexscene8y.tumblr.com amber heard nude photos say goodbye to ya'll so this is kind of impolite, right? Goodbye ya'll people. Ok, here are some Julianne Hough nude pictures and you can read this nice review http://clonfickastca1987.inube.com reese witherspoon bushh below as well. Some of you might not agree with me on this as they can say She is 40, http://tathypaquad1972.inube.com lindsay lohan butt what can be so beneficial about this. I wish I could see that picture but unfortunately that is only my next dirty fantasy and http://eakeiraknightleynakedm8.tumblr.com keira knightley nude there is nothing I can do right there except for just watching all those nice photos of her that I have got right here on this website. Of course if you made a plastic surgery on your tits http://lbsunnyleonesex2k.tumblr.com click here so that they now bigger than butt it doesn't mean you should go and increase your butt. For example, http://ezkaleycuoconaked70.tumblr.com kaley cuoco topless I was trying really hard to imagine Kari Byron naked although she was standing there with her clothes on. By the way I wouldn't exclude the possibility that she has started to work on her body as soon as http://gejessicasimpsonpornio.tumblr.com jessica simpson nake photos she was hired in Hugh's mention. Anyway, I did that on this photo and you know what? After about 50 seconds I was http://apalopstal1970.inube.com kari byron boobs cumming with the most powerful fountain for this week. Moreover, if you do the same thing I can http://ratpocahi1976.inube.com click here bet that your decision will be the same as mine. By saying nice I mean when you come to the end of this post you will be required to rate and comment her photos so please don't use any bad http://u0oliviawildenudeh0.tumblr.com http://u0oliviawildenudeh0.tumblr.com words in her address because she is celebrity and it is not polite to say something bad about famous people. But I won't deny the fact that there are some fake ones among http://80candicemichellenudent.tumblr.com candice michelle sex scene them as well so don't be so naive. Take a look at Jaime Pressly nude pictures and you will be able to get it http://downkinecro1978.inube.com click here up in about twelve seconds or something.
+
Любой язык программирования создается для решения определенного круга задач. Не существует языка, который бы позволял одинаково удобно решать задачи любого характера. Языки программирования различают по многим критериям, делят на большое количество классов и т. д. Мы же рассмотрим такой вопрос как идеологические особенности языка. Здесь, под идеологией языка понимаются некоторые конкретные подходы к отдельным вопросам, например к используемым парадигмам программирования, принципам организации памяти, отношению к исключениям и т. д.
  
But she doesn't seem to be http://y5shakiradesnudasq.tumblr.com watch there smiling and I think this is something compulsory related or not. How do you know what kind of tits she really has? Her tits are very cool and those are the ones that a lot of men would love to http://gdshannendohertynude1z.tumblr.com shannen doherty playboy touch. He has to be smart, funny and intelligent, right? And what man is looking for in woman? http://franlimonttic1979.inube.com emma watson naked pictures First of all he stares at her boobs and if they're big, he keeps doing that. His wife is upstairs so he runs in his house slams the door and screams Honey, pack you back, I have just http://coaletebell1978.inube.com shakira naked pictures one two million dollars in lottery. Do you http://7pdaniellestaubsextapeov.tumblr.com http://7pdaniellestaubsextapeov.tumblr.com know that I am just crazy about 70's and 80's as well? Oh yeah, and by the way I am saying that not just because I only love those times. And that's http://cleanvalbusub1976.inube.com rihanna naked exactly why today I have this Rachel McAdams nude picture so that her fans could do. That's where the interest of watching Gabrielle http://8kcoconudezy.tumblr.com go here Anwar naked pictures start to gain its popularity and in nowadays they still want to know how she looks like without her clothes. Do you know why I http://chomhandderti1972.inube.com anne hathaway butt love her that much so I have decided to dedicate this whole article to her? That would be obvious. But, she is a celebrity and http://1eerikaeleniakdesnudac6.tumblr.com click here I can't say I'm pretty popular right now so there is nothing much to do right now. If you pay attention to Jennifer Love Hewitt naked pictures you will notice that her http://bijenniferanistontitsfr.tumblr.com jennifer aniston nude body is a result of a pure work in gym.
+
== Компиляторы и интерпретаторы ==
  
She is dressed in that gorgeous dress http://faemmastonehotig.tumblr.com emma stone fakes that underlines her perfect figure like thighs, ass and of course her thin waist. With some great pleasure I am http://vermatapho1989.inube.com watch there representing you these Olivia Munn naked pictures and not just that. Who saw Diana Kauffman nude will appreciate this review as I have got http://itleatanno1978.inube.com click here some new pictures of her. Not that I think she didn't deserved that http://podthetadi1974.inube.com kate upton in a bikini but his position is too high for her. Anyway, that photo of the cover should be appreciated http://lochilgachamb1981.inube.com go here by us and therefore I am going to start first. Anyway, go through that video several http://sonbbestkingburk1982.inube.com janet jackson in a bikini times and you'll be fine, believe me. Self esteem http://landtipumol1983.inube.com rosie huntington-whiteley nake photos is not that everybody can have but our guest of tonight surely has it. This http://marphomamfest1986.inube.com http://marphomamfest1986.inube.com is ridiculous, I mean how the hell it is possible to give this gorgeous blond only the 24th place among top hottest blonds. There is this movie called Ballet Shoes featuring Emma Watson nude seating in bath http://memenwike1982.inube.com danielle fishel fakes with some other girl. I http://r3meganfoxporncy.tumblr.com megan fox nude photos don't know why but she wears that makeup that some clowns do before the show. So, have you thought about doing your own photo gallery of Salma? If not, then think about it because people will be coming and checking out those kinds of photos and http://klkimkardashianfullsextape5s.tumblr.com http://klkimkardashianfullsextape5s.tumblr.com saying thanks to you.
+
Все языки программирования можно условно разделить на два класса: компилируемые и интерпретируемые.  
  
== New Toilet System Transform Waste into Electricity ==
+
''Компилируемые языки программирования'' — это такие языки, для обработки которых используются ''компиляторы''. Они преобразуют исходный код программы в машинный код, понятный конкретному процессору и способный выполняться на нем непосредственно. К достоинствам такого подхода можно отнести то, что программа, написанная целиком на машинном коде, имеет высокую производительность. Недостатком является то, что скомпилированная программа ориентирована на конкретную архитектуру и на конкретный процессор. В результате, программа, собранная для одного процессора не будет работать на другом.
  
Scientists from Nanyang Technological University (NTU) have invented a new toilet system that will turn human waste into electricity and fertilisers and also reduce the amount of water needed for flushing by up to 90 per cent compared to current toilet systems in Singapore.
+
''Интерпретируемые языки программирования'' — языки, для обработки которых используются ''интерпретаторы'', которые (в противовес компиляторам) не производят преобразования программы в машинные коды, а исполняют ее непосредственно. Конечно, производительность интерпретаторов заметно меньше, однако для выполнения, программу не требуется компилировать — она будет работать на любой платформе, где есть реализация ее интерпретатора.  
  
[[http://goodvillenews.com/New-Toilet-System-Transform-Waste-into-Electricity-zvQBzk.html New Toilet System Transform Waste into Electricity]]
+
Условным это разделение было названо потому, что граница между компиляторами и интерпретаторами очень прозрачная. Практически любой компилируемый язык можно интерпретировать, в то же время многие современные интерпретаторы для повышения быстродействия производят т. н. "компиляцию на лету", при которой исходный текст программы преобразуется в абстрактный набор инструкций или байт код, который уже выполняется.
  
[[http://goodvillenews.com/wk.html GoodvilleNews.com - good, positive news, inspirational stories, articles]]
+
Язык К++ как раз относится к такой промежуточной категории языков. В результате компилирования исходного текста программы на языке К++ получается байт код модуля, который уже может быть выполнен на виртуальной машине gide. Байт код является платформенно независимым, что позволяет исполнять его на любой платформе, где существует реализация виртуальной машины.
 +
 
 +
== Парадигменность  ==
 +
 
 +
[http://ru.wikipedia.org Википедия] дает следующее определение понятия парадигма программирования:
 +
 
 +
«''Парадигма программирования — это [http://ru.wikipedia.org/wiki/Парадигма парадигма], определяющая стиль программирования, иначе говоря — некоторый цельный набор идей и рекомендаций, определяющих стиль написания программ. Парадигма программирования представляет (и определяет) то, как программист видит выполнение программы. Например, в объектно-ориентированном программировании, программист рассматривает программу как набор взаимодействующих объектов, тогда как в функциональном программировании программа представляется в виде цепочки вычисления функций''».
 +
 
 +
В общем смысле, под ''парадигмой'' можно понимать некоторый набор концепций, которые применяются при построении программы. Языки, которые позволяют писать программы в рамках нескольких парадигм, называются ''мультипарадигменными''. Например, язык К++ позволяет писать программы в структурном (совокупность функций, вызывающих друг друга), объектно-ориентированном (построение объектной модели) и смешанном (объединение обоих подходов) стилях. Следовательно, К++ тоже может служить примером '''мультипарадигменного''' языка.
 +
 
 +
Говоря о парадигмах, нельзя не упомянуть подлинно объектно-ориентированную природу языка К++, которая достигается уже на уровне виртуальной машины. В отличие от C++, где объектная модель является всего лишь "надстройкой" над структурной основой, язык К++, подобно Ruby и его предтечи — языку Smalltalk, придерживается принципа "все есть объект". Это значит, что все элементы языка являются объектами. Встроенные типы данных отсутствуют, вместо них применяются классы из [[Стандартная библиотека gide|стандартной библиотеки]] языка. Это позволяет добиться удивительной гибкости при проектировании программ, вплоть до того, что программист может видоизменять даже стандартные классы, расширяя их и добавляя в них собственный функционал.
 +
 
 +
'''Примечание:''' Более подробно, о расширениях можно почитать в кратком [[Введение, или краткий обзор#Расширение классов|обзоре]], либо в главе [[K++ как объектно-ориентированный язык#Расширения|K++ как объектно-ориентированный язык]].
 +
 
 +
== Понятие о типизации ==
 +
 
 +
Если говорить кратко, то под типизацией понимаются принципы организации переменных в языке. Различают ''статическую типизацию'', при которой каждой переменной ставится в соответствие ее тип, который не может быть изменен в процессе выполнения программы, и ''динамическую типизацию'', где переменные меняют свой тип от случая к случаю. К++ вводит понятие ''полудинамической типизации'', которая сочетает в себе преимущества обоих подходов и позволяет взять лучшие стороны каждого из них.
 +
 
 +
'''Примечание:''' Более подробно понятие типизации рассмотрено в главе [[Переменные]].
 +
 
 +
== Управление памятью ==
 +
 
 +
Различные языки подразумевают разные способы управления памятью. Некоторые языки, например, такие как Си, предоставляют программисту прямой доступ к памяти, при этом программист сам должен следить за тем, чтобы память выделялась по мере обращения к ней и, самое главное, своевременно освобождалась после использования.
 +
 
 +
Другие же языки, предоставляют программисту лишь тот уровень абстракции, на который они рассчитаны, при том, что вся работа по управлению памятью ложится на сам язык. Это уберегает программиста от проблем и ошибок, связанных с неправильной работой с памятью. Например, язык Java не предполагает прямого доступа к памяти виртуальной машины. Взамен, он предоставляет наборы классов, которые должны обеспечить программиста всеми необходимыми инструментами.
 +
 
 +
Подобно Java, язык К++ так же не предполагает прямого доступа к памяти. В терминах языка программист описывает свои требования к хранилищу данных, не заботясь о том, как нужно выделять память и когда ее освобождать.
 +
 
 +
== Понятие исключения ==
 +
 
 +
С развитием вычислительной техники и усложнения программ возникла проблема стабильности программ. Традиционный подход, при котором функция возвращает код ошибки, превратил разработку программного обеспечения в настоящий ад, при том, что буквально каждый вызов функции приходилось оборачивать в соответствующее условие проверки кода ошибки. В некоторых областях это все же оправданно (например, ядро Диптауна с успехом применяет этот механизм в совокупности со стеком ошибок). В других областях, таких как сфера прикладного ПО такой подход менее востребован, поскольку там приводятся жесткие требования к скорости написания программ и к их качеству.
 +
 
 +
В результате, возникла концепция исключительных ситуаций или ''исключений''. ''Механизм исключений'', — это концепция, позволяющая повысить стабильность работы программы путем внесения в нее своеобразных "контрольных точек". Если в процессе работы программы происходит непредвиденная ситуация, например, такая как ошибка ввода-вывода или внезапное прекращение сеанса связи, то код, обнаруживший ошибку, создает специальный объект-исключение и "выбрасывает" его, то есть ''генерирует исключение''. При этом, выполнение программы прерывается и управление передается ближайшей контрольной точке, которая может перехватить это исключение и принять некоторое решение относительно того что делать дальше: например, показать пользователю сообщение об ошибке.
 +
 
 +
Преимущество концепции исключений в том, что программисту не надо проверять каждый вызов на правильность. Он просто пишет код, предполагая что "все идет как надо". Лишь в некоторых местах, где заранее предусматривается возможность возникновения ошибки, вставляются те самые опорные точки — перехватчики исключений. Если же ошибка произойдет, то она рано или поздно будет отловлена.

Текущая версия на 14:37, 13 июля 2013

Содержание

[править] Немного теории о языках программирования

В этой главе мы кратко рассмотрим основные понятия, касающиеся языков программирования, а также попробуем классифицировать язык К++ с позиции этих понятий.

Любой язык программирования создается для решения определенного круга задач. Не существует языка, который бы позволял одинаково удобно решать задачи любого характера. Языки программирования различают по многим критериям, делят на большое количество классов и т. д. Мы же рассмотрим такой вопрос как идеологические особенности языка. Здесь, под идеологией языка понимаются некоторые конкретные подходы к отдельным вопросам, например к используемым парадигмам программирования, принципам организации памяти, отношению к исключениям и т. д.

[править] Компиляторы и интерпретаторы

Все языки программирования можно условно разделить на два класса: компилируемые и интерпретируемые.

Компилируемые языки программирования — это такие языки, для обработки которых используются компиляторы. Они преобразуют исходный код программы в машинный код, понятный конкретному процессору и способный выполняться на нем непосредственно. К достоинствам такого подхода можно отнести то, что программа, написанная целиком на машинном коде, имеет высокую производительность. Недостатком является то, что скомпилированная программа ориентирована на конкретную архитектуру и на конкретный процессор. В результате, программа, собранная для одного процессора не будет работать на другом.

Интерпретируемые языки программирования — языки, для обработки которых используются интерпретаторы, которые (в противовес компиляторам) не производят преобразования программы в машинные коды, а исполняют ее непосредственно. Конечно, производительность интерпретаторов заметно меньше, однако для выполнения, программу не требуется компилировать — она будет работать на любой платформе, где есть реализация ее интерпретатора.

Условным это разделение было названо потому, что граница между компиляторами и интерпретаторами очень прозрачная. Практически любой компилируемый язык можно интерпретировать, в то же время многие современные интерпретаторы для повышения быстродействия производят т. н. "компиляцию на лету", при которой исходный текст программы преобразуется в абстрактный набор инструкций или байт код, который уже выполняется.

Язык К++ как раз относится к такой промежуточной категории языков. В результате компилирования исходного текста программы на языке К++ получается байт код модуля, который уже может быть выполнен на виртуальной машине gide. Байт код является платформенно независимым, что позволяет исполнять его на любой платформе, где существует реализация виртуальной машины.

[править] Парадигменность

Википедия дает следующее определение понятия парадигма программирования:

«Парадигма программирования — это парадигма, определяющая стиль программирования, иначе говоря — некоторый цельный набор идей и рекомендаций, определяющих стиль написания программ. Парадигма программирования представляет (и определяет) то, как программист видит выполнение программы. Например, в объектно-ориентированном программировании, программист рассматривает программу как набор взаимодействующих объектов, тогда как в функциональном программировании программа представляется в виде цепочки вычисления функций».

В общем смысле, под парадигмой можно понимать некоторый набор концепций, которые применяются при построении программы. Языки, которые позволяют писать программы в рамках нескольких парадигм, называются мультипарадигменными. Например, язык К++ позволяет писать программы в структурном (совокупность функций, вызывающих друг друга), объектно-ориентированном (построение объектной модели) и смешанном (объединение обоих подходов) стилях. Следовательно, К++ тоже может служить примером мультипарадигменного языка.

Говоря о парадигмах, нельзя не упомянуть подлинно объектно-ориентированную природу языка К++, которая достигается уже на уровне виртуальной машины. В отличие от C++, где объектная модель является всего лишь "надстройкой" над структурной основой, язык К++, подобно Ruby и его предтечи — языку Smalltalk, придерживается принципа "все есть объект". Это значит, что все элементы языка являются объектами. Встроенные типы данных отсутствуют, вместо них применяются классы из стандартной библиотеки языка. Это позволяет добиться удивительной гибкости при проектировании программ, вплоть до того, что программист может видоизменять даже стандартные классы, расширяя их и добавляя в них собственный функционал.

Примечание: Более подробно, о расширениях можно почитать в кратком обзоре, либо в главе K++ как объектно-ориентированный язык.

[править] Понятие о типизации

Если говорить кратко, то под типизацией понимаются принципы организации переменных в языке. Различают статическую типизацию, при которой каждой переменной ставится в соответствие ее тип, который не может быть изменен в процессе выполнения программы, и динамическую типизацию, где переменные меняют свой тип от случая к случаю. К++ вводит понятие полудинамической типизации, которая сочетает в себе преимущества обоих подходов и позволяет взять лучшие стороны каждого из них.

Примечание: Более подробно понятие типизации рассмотрено в главе Переменные.

[править] Управление памятью

Различные языки подразумевают разные способы управления памятью. Некоторые языки, например, такие как Си, предоставляют программисту прямой доступ к памяти, при этом программист сам должен следить за тем, чтобы память выделялась по мере обращения к ней и, самое главное, своевременно освобождалась после использования.

Другие же языки, предоставляют программисту лишь тот уровень абстракции, на который они рассчитаны, при том, что вся работа по управлению памятью ложится на сам язык. Это уберегает программиста от проблем и ошибок, связанных с неправильной работой с памятью. Например, язык Java не предполагает прямого доступа к памяти виртуальной машины. Взамен, он предоставляет наборы классов, которые должны обеспечить программиста всеми необходимыми инструментами.

Подобно Java, язык К++ так же не предполагает прямого доступа к памяти. В терминах языка программист описывает свои требования к хранилищу данных, не заботясь о том, как нужно выделять память и когда ее освобождать.

[править] Понятие исключения

С развитием вычислительной техники и усложнения программ возникла проблема стабильности программ. Традиционный подход, при котором функция возвращает код ошибки, превратил разработку программного обеспечения в настоящий ад, при том, что буквально каждый вызов функции приходилось оборачивать в соответствующее условие проверки кода ошибки. В некоторых областях это все же оправданно (например, ядро Диптауна с успехом применяет этот механизм в совокупности со стеком ошибок). В других областях, таких как сфера прикладного ПО такой подход менее востребован, поскольку там приводятся жесткие требования к скорости написания программ и к их качеству.

В результате, возникла концепция исключительных ситуаций или исключений. Механизм исключений, — это концепция, позволяющая повысить стабильность работы программы путем внесения в нее своеобразных "контрольных точек". Если в процессе работы программы происходит непредвиденная ситуация, например, такая как ошибка ввода-вывода или внезапное прекращение сеанса связи, то код, обнаруживший ошибку, создает специальный объект-исключение и "выбрасывает" его, то есть генерирует исключение. При этом, выполнение программы прерывается и управление передается ближайшей контрольной точке, которая может перехватить это исключение и принять некоторое решение относительно того что делать дальше: например, показать пользователю сообщение об ошибке.

Преимущество концепции исключений в том, что программисту не надо проверять каждый вызов на правильность. Он просто пишет код, предполагая что "все идет как надо". Лишь в некоторых местах, где заранее предусматривается возможность возникновения ошибки, вставляются те самые опорные точки — перехватчики исключений. Если же ошибка произойдет, то она рано или поздно будет отловлена.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
информация
документация
Инструменты