text:
Robotics/Types of Robots/Wheeled

Wheeled robots are robots that navigate around the ground using motorized wheels to propel themselves. This design is simpler than using treads or legs and by using wheels they are easier to design, build, and program for movement in flat, not-so-rugged terrain. They are also more well controlled than other types of robots. Disadvantages of wheeled robots are that they can not navigate well over obstacles, such as rocky terrain, sharp declines, or areas with low friction. Wheeled robots are most popular among the consumer market, their differential steering provides low cost and simplicity. Robots can have any number of wheels, but three wheels are sufficient for static and dynamic balance. Additional wheels can add to balance; however, additional mechanisms will be required to keep all the wheels in the ground, when the terrain is not flat.

Navigation
Most wheeled robots use differential steering, which uses separately driven wheels for movement. They can change direction by rotating each wheel at a different speed. There may be additional wheels that are not driven by a motor these extra wheels help keep it balanced.

2-wheeled robots
Two wheeled robots are harder to balance than other types because they must keeping moving to maintain upright. The center of gravity of the robot body is kept below the axle, usually this is accomplished by mounting the batteries below the body. They can have their wheels parallel to each other, these vehicles are called dicycles, or one wheel in front of the other, tandemly placed wheels. Two wheeled robots must keep moving to remain upright and they can do this by driving in the direction the robot is falling. To balance, the base of the robot must stay with under its center of gravity. For a robot that has the left and right wheels, it needs at least two sensors. A tilt sensor that is used to determine tilt angle and wheel encoders which keep track of the position of the platform of the robot.

Roomba
Roombas are two-wheeled vacuum cleaners that automatically moves around cleaning up a room. They utilizes a contact sensor in the front and a infrared sensor on its top.

Segway
Segways are self-balancing dicycle electric vehicles.

Ghost Rider
Ghost Rider was the only two wheeled robot entered for the Darpa Grand 2005 Challenge. It was unique because of its motorcycle design, unlike the other two-wheeled robots, the wheel alignment is front and back, which makes it harder to balance as it turns. This tandem design of the wheels is much less common than that of a dicycle.

3-wheeled vehicles
3-wheeled robots may be of two types: differentially steered (2 powered wheels with an additional free rotating wheel to keep the body in balance) or 2 wheels powered by a single source and a powered steering for the third wheel. In the case of differentially steered wheels, the robot direction may be changed by varying the relative rate of rotation of the two separately driven wheels. If both the wheels are driven in the same direction and speed, the robot will go straight. Otherwise, depending on the speed of rotation and its direction, the center of rotation may fall anywhere in the line joining the two wheels.

The center of gravity in this type of robot has to lay inside the triangle formed by the wheels. If too heavy of a mass is mounted to the side of the free rotating wheel, the robot will tip over.

Omni Wheels
Another option for wheeled robots that makes it easier for robots with wheels not all mounted on the same axis to have Omni Wheels. An omni wheel is like many smaller wheels making up a large one, the smaller ones have axis perpendicular to the axis of the core wheel. This allows the wheels to move in two directions, and the ability to move holonomically, which means it can instantaneously move in any direction. Unlike a car, which moves non-holnomicallly and has to be in motion to change heading. Omni-wheeled robots can move in at any angle in any direction, without rotating beforehand. Some omni wheel robots use a triangular platform, with the three wheels spaced at 60 degree angles. Advantages of using 3 wheels and not 4 are that its cheaper, and 3 points are guaranteed to be on the same plane, so each wheel in contact with the ground, but only one wheel will be rotating in the direction of travel. The disadvantages of using Omni wheels is that they have poor efficiency due to not all the wheels rotating in the direction of movement, which also causes loss from friction, and are more computationally complex because of the angle calculations of movement.

2 powered, 2 free rotating wheels
Same as the Differentially steered ones above but with 2 free rotating wheels for extra balance.

More stable than the three wheel version since the center of gravity has to remain inside the rectangle formed by the four wheels instead of a triangle. This leaves a larger useful space. Still it's advisable to keep the center of gravity to the middle of the rectangle as this is the most stable configuration, especially when taking sharp turns or moving over a non-level surface.

2-by-2 powered wheels for tank-like movement

This kind of robot uses 2 pairs of powered wheels. Each pair (connected by a line) turn in the same direction. The tricky part of this kind of propulsion is getting all the wheels to turn with the same speed. If the wheels in a pair aren't running with the same speed, the slower one will slip (inefficient). If the pairs don't run at the same speed the robot won't be able to drive straight. A good design will have to incorporate some form of car-like steering.

Car-like steering

This method allows the robot to turn in the same way a car does. This is a far harder method to build and makes dead reckoning much harder as well. This system does have an advantage over previous methods when your robot is powered by a combustion engine: It only needs one motor (and a servo for steering of course). The previous methods would require either 2 motors or a very complicated gearbox, since they require 2 output axles with independent speed and direction of rotation.

Examples
The DARPA Grand and Urban Challenges pit robotic cars against one another in a series of navigational tests. These robots are fully automated and drive themselves along the test course. The DOD sponsors the competition and it is used to facilitate robotic development.

5 or more wheeled vehicles
For larger robots. Not always very practical. Especially when more powered wheels are used the design becomes much more complex as each of the wheels have to turn with the same speed when the robot has to move forwards. Differences in speed between the left and right wheels in differentially steered robots cause the robot to move to the side instead of in a straight line. Difference in speed between wheel on the same side cause slipping of the slowest wheel.

Sometimes an extra free rotating wheel with odometry is added to the robot. This measures more accurately how the robot moves. Odometry on the powered wheels excludes slip and other movements and thus could be erroneous.

Examples
The Mars Rovers (Sojourner, Spirit, Opportunity) are six wheeled robots that navigate across Martian terrain after landing. They are used to examine territory, interesting landmarks and make observations about the surface of Mars. They have a suspension system which keeps all six wheels in contact with the surface, and helps them traverse slopes ans sandy terrain.

One Wheel
One wheeled robots are extremely difficult to keep balanced due to the single point of contact with the ground. There have been experimental designs and robots that do only have one wheel. It is easier to use a spherical wheel rather than a typical disc wheel, as the robot can move in any direction along the sphere. An example sketch shows the basic idea of using gyroscopes and counter-torque mechanisms to keep the robot upright. The spinning flywheels stabilize and tilt it, allowing for non-holonomic movement.

title: Robotics/Types of Robots/Wheeled


text:
Robotics/Types of Robots/Tracked

This type of robot uses tracks like tanks for movement. it's very effective in outdoor environments, especially on loose sand. However on concrete it's less effective than wheeled vehicles.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Robotics/Types of Robots/Tracked


text:
Persian/Lesson 15

درس 15 - Les 15

[[media:fa-و مردم از آن استفاده مي كنند.ogg|و مردم از آن استفاده مي كنند]]

 * [[media:fa-كشاورز.ogg|كشاورز]] - tuinder
 * [[media:fa-كشاورزي كردن.ogg|كشاورزي كردن]] - tuinieren
 * [[media:fa-اسب.ogg|اسب]] - paard
 * [[media:fa-گاري.ogg|گاري]] - rijtuig
 * [[media:fa-مي بندد.ogg|مي بندد]] - vastmaken
 * [[media:fa-استفاده.ogg|استفاده]] - gebruiken
 * [[media:fa-سنگين.ogg|سنگين]] - zwaar
 * [[media:fa-سبك.ogg|سبك]] - licht
 * [[media:fa-جواد.ogg|جواد]] - Jawad jongensnaam
 * [[media:fa-پدر.ogg|پدر]] - vader
 * [[media:fa-برنج.ogg|برنج]] - rijst
 * [[media:fa-گندم.ogg|گندم]] - tarwe, graan
 * [[media:fa-جو.ogg|جو]] - gerst
 * [[media:fa-كاشتن.ogg|كاشتن]] - planten werkwoord
 * [[media:fa-مريم.ogg|مريم]] - Mariam meisjesnaam
 * [[media:fa-اين مردكشاورز است.ogg|اين مردكشاورز است]] - die man is tuinder
 * [[media:Fa-او با گاري بار سنگين مي بدد.ogg|او اسب را به گاري مي بندد]] - Hij zet het paard voor het rijtuig
 * [[media:fa-او با گاري بار سنگين مي بدد.ogg|او با گاري بار سنگين مي بدد]] - Hij trekt het zware rijtuig
 * [[media:Fa-پدر_جواد_گشاورز_است.ogg|پدر جواد گشاورز است]] - de vader van Jawad is tuinder
 * [[media:fa-او برنج و گندم مي كارد.ogg|او برنج و گندم مي كارد]] - hij plant rijst en tarwe
 * [[media:fa-و مردم از آن استفاده مي كنند.ogg|و مردم از آن استفاده مي كنند]] - en daar maken mensen gebruik van

 * تكليف شب . - huiswerk
 * جمله بسازيد:  برنج  گندم  پدر  كشاورز جواد - zinnen maken
 * فعل بسازيد:  كاشتن استفاده كردن  كشا ورزي كردن - werkwoord vervoegen

title: Persian/Lesson 15


text:
Robotics/Types of Robots/Walkers

“In the early days of air travel, detractors used to argue that, if God had meant us to fly, he would have given us wings. Had he meant us to roll, he might also have given us wheels – but instead we, along with the great preponderance of land animals great and small, have wound up traveling on legs.”

Legs v. Wheels
Most man-made vehicles today travel on wheels and for good reason: wheels are much easier to construct and control. In today’s economy, they also tend to be much cheaper than their legged counterparts. However legs have distinct advantages over wheels. The biggest advantage is in transversability and efficiency. Legged robots have a unique ability to:

 * Isolate their body from terrain irregularities
 * Avoid undesirable footholds
 * Regulate their stability
 * Achieve energy efficiency

These advantages are very desirable in modern robotics, and therefore a lot of research is being put into creating robots that can walk. The most challenging task in designing a legged robot is to create a system that can generate the proper gait.

Dynamic v. Static
Locomotion techniques can be divided into two main categories: static and dynamic.

Robots that use static movement are always balanced; that is, their center of gravity is always within their ground contact base. While this technique has been successfully used to create many robots (included wheeled ones), it is more akin to wheeled movement than true dynamic walking and as such retains fewer of the advantages. While more adept at transversing uneven terrain than most wheeled robots, robots that use static walking are very inefficient as power is put into every movement. However, robots that use static walking are much easier to control than their dynamic counterparts and thus often more viable.

Dynamic walking is characterized in that the robot is not always in balance. Many robots that use dynamic walking are continually “falling” and thus much more energy efficient. Dynamic walking requires much more complex control systems in order to not fall. Robots utilizing dynamic walking cannot use the same motions at different speeds to attain different speeds of movement, but must use entirely different motions at different speeds. However, dynamic walking can achieve many more advantages over wheeled locomotion. Dynamic walking is found very abundantly in nature.

A subset of dynamic walking is called passive dynamic movement. Most dynamic walking systems use active control to move the legs to the correct orientations for walking (hence active dynamic walking). Passive dynamic walking is characterized by a system where “gravity and inertia alone generate the locomotion pattern.” Passive dynamic movement can be achieved with maximum efficiency, as the vehicle uses its own forward momentum to propagate its next movement. Very little energy is lost from the system. Most of the concepts of passive dynamic walking and research conducted in the field was done by aeronautical engineer Tad McGeer between 1988 and 1992.

More Than Four
Many different walking robots have been developed that use six or more legs. This is due to the fact that a robot using this many legs can be controlled with static walking techniques rather than dynamic walking. Most of the walking techniques can be demonstrated sufficiently using the six legged model:

Wave Gait

 * 1) Six legged robot in neutral position
 * 2) Front pair of legs move forward
 * 3) Second pair of legs move forward
 * 4) Third pair of legs move forward
 * 5) Body follows legs forward

Tripod Gait

 * 1) Six legged robot in neutral position
 * 2) Alternating legs move forward on either side
 * 3) All other legs move forward
 * 4) Body follows legs forward

Most robots using six or more legs use a variation of one of these two gait models.

Four Legs
A system on four legs is another walking scheme found readily in nature. Four legged robots have the advantage of being statically stable when not moving, but require dynamic walking control. There are many different ways for a four legged robot to walk including alternating pairs and opposite pairs as in six legged robots. However these techniques now cease to be statically stable and thus require dynamic control.

Boston Dynamics has developed a four legged robot for DARPA (Defense Advanced Research Projects Agency) called “Big Dog,” that they claim is “the most advanced quadruped robot on earth.” Big Dog can run at four miles per hour, climb thirty five degree slopes, and carry 340 pounds. But the most impressive feature is its dynamic walking: Big Dog can recover from slipping and even being pushed. Its behavior is such that it approaches the infamous “uncanny valley” (http://en.wikipedia.org/wiki/Uncanny_Valley). The Boston Dynamics website (http://bostondynamics.com/content/sec.php?section=BigDog) features a video demonstration of Big Dog’s abilities.

Three Legs
Three legged robots are not very common, especially since they have no biological counterparts. However, researchers at Virginia Tech’s RoMeLa lab have developed a three legged robot STriDER that uses a “revolutionary” passive dynamic walking technique. STriDER is short for Self-excited Tripedal Dynamic Experimental Robot. STriDER sways until it can lift one leg, and using the other two as an A-frame, swing it in between the other two “stance” legs moving forward at a sixty degree angle. This patent pending “tripedal gait” is extremely energy efficient and requires minimal control. It also allows STriDER to easily change directions by changing the sequence of its steps. A video posted by the development team can be found at http://www.youtube.com/watch?v=7XsaJwKKBYo&feature=related.

Two Legs
Two legged robots have probably seen the most development dollars since humanoid robots have been envisioned since the very beginning of the field. Much of the development in passive dynamic walking has been done in this area. The design of a bipedal passive dynamic walker begins with the concept of a wheel with spokes. If the wheel is divided into sections, and all but two removed, we have what appears to be a set of legs. When the mass is properly distributed, the legs each act as inverted pendulums and the robots “rolls” through its steps.

Further complexity can be added to the model by using knee joints to shorten the legs (allowing one to swing past the other without touching the ground) and ankle joints that can provide a “spring” to the step to add lost energy back into the system. For a more in-depth explanation of passive dynamics walking visit http://www-personal.umich.edu/~artkuo/Passive_Walk/passive_walking.html.

There are several robots that have used these concepts to achieve firsts in the field of robotics. “RunBot,” developed in Germany and Scotland, broke the speed record per size for a robot in April 2006 by walking at 3.5 leg-lengths per second. The Cornell Ranger, while not truly passive, is passive inspired and one of many robots that has more than two legs but is still classified as bipedal. When viewed from the side, Ranger appears to have only two legs, but it actually has four legs. These four legs act in pairs of two, qualifying it as bipedal but providing better lateral stability. On April 3, 2008 Ranger walked 9.07 kilometers without stopping, an unofficial record at that time (it has since been surpassed, according to the Cornell team, by Boston Dynamic’s Big Dog).

One of the most successful companies at building bipedal robots over the years has been Honda. Their most recent model, ASIMO, is one of the few bipedal robots that appears humanoid, can climb stairs, and carries its own power supply. ASIMO can also change its gait in real time using Honda’s i-WALK technology. This allows ASIMO to continuously change speeds and direction. The robot can walk up stairs and run up to four miles per hour.

One Leg
1980 and 1993 there was a lot of research in making one legged robots at the Massachusetts Institute of Technology (MIT). The MIT lab turned out a series of “MIT hoppers” that could balance themselves and traverse a path. The biggest challenge with the hoppers was that they could not stand still; they needed to continue hopping in order to maintain their balance. Researchers were able to build a 3-D One-Leg Hopper that “hopped in place, traveled at a specific rate, followed simple paths, and maintained balance when disturbed.” They also constructed a hopper named Uniroo that used an actuated tail to maintain its balance.

title: Robotics/Types of Robots/Walkers


text:
Robotics/Types of Robots/Arms

Arms are types of jointed robot manipulator that allow robots to interact with their environment. Many have onboard controllers or translators to simplify communication, though they may be controlled directly or in any number of ways. Due to this fact, standalone arms are often classified as full robots.

Types of Robotic Arms There are many different types of robotic arms, but most can be characterized into one of six major categories by their mechanical structure. Cartesian (also known as Gantry) robots have three joints that are coincident with the standard X-Y-Z Cartesian axes. Cylindrical arms have any number of joints that operate on a cylindrical axis, normally rotating about one fixed rod. Spherical (polar) arms are those with joints that allow it full rotation throughout a spherical range. SCARA robots have two parallel rotary joints to allow full movement throughout a plane, typically for pick-and-place work. Articulated robots are used for complex assembly operations, and consist of three or more rotary joints. Parallel robots have three concurrent prismatic or rotary joints, and allow for tilting of heavy or sensitive platforms.

Applications Robotic arms are typically used in industry. Repetitive autonomous robots perform one task repeatedly based upon predetermined movements and specifically located objects. Start and stop commands are determined by position, acceleration, deceleration, distance, and direction. More complex actions are executed based upon sensor processing. If object orientation or position is unknown, arms are often paired with machine vision and artificial intelligence to identify the object and subsequently control the arm.

Parameters Arms are typically defined by fourteen different parameters.

Number of Axes – Two axes are needed to reach any point in a plane. Three are required to reach a point in space. Roll, pitch, and yaw control are required for full control of the end manipulator. Degrees of Freedom – Number of points a robot can be directionally controlled around. A human arm has seven degrees; articulated arms typically have up to 6. Working Envelope – Region of space a robot can encompass. Working Space – The region in space a robot can fully interact with. Kinematics – Arrangement and types of joints (Cartesian, Cylindrical, Spherical, SCARA, Articulated, Parallel) Payload – Amount that can be lifted and carried Speed – May be defined by individual or total angular or linear movement speed Acceleration – Limits maximum speed over short distances. Acceleration is given in terms of each degree of freedom or by axis. Accuracy – Given as a best case with modifiers based upon movement speed and position from optimal within the envelope. Repeatability – More closely related to precision than accuracy. Robots with a low repeatability factor and high accuracy often need only to be recalibrated. Motion Control – For certain applications, arms may only need to move to certain points in the working space. They may also need to interact with all possible points. Power Source – Electric motors or hydraulics are typically used, though new methods are emerging and being tested.
 Drive – Motors may be hooked directly to segments for direct drive. They may also be attached via gears or in a harmonic drive system
 Compliance – Measure of the distance or angle a robot joint will move under a force.

End Effectors The arm itself is only responsible for positioning. An end effector is necessary for actual environmental interaction. Some common choices are grippers, sprayers, grinders, welders, and vacuums, though many other options are available. There is a large variance in complexity, ranging from flush mounted, non-moving parts (magnets or sticky pads) to multi-jointed, multi-sensor parts with various inputs and outputs. End effectors are typically chosen based upon the application, and many arms will fit multiple end effectors.

Distribution A 2006 Japanese report shows that 60% of robotic arm installations were for articulated robots, 22% were for gantry, 13% were SCARA, and 4% were Cylindrical. The automobile industry has the highest concentration of industrial robots with nearly 1 robot per 10 people.

Biological Modeling Biological design of robotic components is becoming increasingly popular. Currently, the Shadow Company (famous for the Shadow Hand) is working on a biomorphic arm that accurately models a human arm. The arm has seven degrees of freedom like the human arm which greatly increases its efficiency.

Researchers at Fraunhofer Institute for Manufacturing Engineering and Automation IPA in Stuttgart have begun working on an arm that is modeled after an elephant’s trunk. The arm uses a cord that is connected to a drive shaft at its midpoint. When the shaft turns, the cord wraps around it both ways forming a double helix. Their prototype arm uses ten of these cord systems with two motors attached to each (the second acts as a failsafe for increased safety).

Similarly, biologists at Hebrew University in Jerusalem are studying Octopi tentacles as a possible model for future robotic arm development. An prototype has not yet been built, but arm design has recently begun.

Additionally, two monkeys learned to control robotic arms through sensors implanted on their brains in a study performed the University of Pittsburgh and Carnegie Mellon University. While not currently practical, the study confirms that brain-controlled prosthetics are feasible and has sparked interest in the area.

title: Robotics/Types of Robots/Arms


text:
Persian/Lesson 16

In this lesson, you will learn the past perfect tense.

Dialogue:
... and... are talking....

 * colspan=4 |
 * }
 * }

Explanation
 * ... and ....

Vocabulary

Past perfect tense

In spoken Persian, /-e/ of the past participle elides with the copular clitic, making the past perfect sound like the simple past in all but the third singular, where the final /-e/ is still pronounced.

Exercises

 * 1. Translate the following sentences into English:
 * 2. Using the vocabulary below make 5 simple sentences in the past perfect tense:
 * }
 * 2. Using the vocabulary below make 5 simple sentences in the past perfect tense:
 * }
 * }
 * }
 * }

Review
In this lesson, you learned the past perfect tense.

title: Persian/Lesson 16


text:
Persian/Lesson 17

In this lesson, you will learn about the comparative and superlative forms of Persian adjectives.

Dialogue:
... and... are talking....

 * colspan=4 |
 * }
 * }

Explanation
 * ... and ....

Vocabulary

درس 17 les17

 * [[media:Fa-هر روز.ogg|هر روز]] - elke dag
 * [[media:Fa-ديروز.ogg|ديروز]] - gisteren
 * [[media:Fa-فردا.ogg|فردا]] - morgen
 * [[media:Fa-آفتاب.ogg|آفتاب]] - zonneschijn
 * [[media:Fa-خورشيد.ogg|خورشيد]] - zon
 * [[media:Fa-مهتاب.ogg|مهتاب]] - maanlicht
 * [[media:Fa-ماه.ogg|ماه]] - maan
 * [[media:Fa-خواهر.ogg|خواهر]] - zuster
 * [[media:Fa-خانه.ogg|خانه]] - huis
 * [[media:Fa-روشن.ogg|روشن]] - licht
 * [[media:Fa-تاريك.ogg|تاريك]] - donker
 * [[media:Fa-گرم.ogg|گرم]]- warm
 * [[media:Fa-سرد.ogg|سرد]] - koud
 * [[media:Fa-بزرگ.ogg|بزرگ]] - groot
 * [[media:Fa-كوچك.ogg|كوچك]] - klein
 * [[media:Fa-خوب.ogg|خوب]] - goed
 * [[media:Fa-بد.ogg|بد]] - slecht
 * [[media:Fa-شب.ogg|شب]] - nacht
 * [[media:Fa-روز.ogg|روز]] - dag
 * [[media:Fa-مسواك.ogg|مسواك]] - tandenborstel
 * [[media:Fa-حوله.ogg|حوله]] - handdoek
 * [[media:Fa-صابون.ogg|صابون]] - zeep
 * [[media:Fa-دندان.ogg|دندان]] - tanden
 * [[media:Fa-از خواب بيدار شدن.ogg|از خواب بيدار شدن]] - wakker worden
 * [[media:Fa-بابا صورتش را سشت.ogg|بابا صورتش را سشت]]- pappa wast zijn gezicht
 * [[media:Fa-من مسواك زدم.ogg|من مسواك زدم]]
 * [[media:Fa-من مسواك زدم.ogg|من مسواك زدم]] - ik poets mijn tanden
 * [[media:Fa-ما از خواب بيدار شديم.ogg|ما از خواب بيدار شديم]] - wij worden wakker
 * [[media:Fa-روز خورشيدزمين را روشن مي كند.ogg|روز خورشيدزمين را روشن مي كند]] - overdag schijnt de zon
 * [[media:Fa-شب ماه زمين را روشن مي كند.ogg|شب ماه زمين را روشن مي كند]] - 's nachts schijnt de maan
 * [[media:Fa-لاله دست و صورت خود را با حوله خشك مي كند.ogg|لاله دست و صورت خود را با حوله خشك مي كند]] - Laleh droogt haar gezicht met een handdoek
 * [[media:Fa-خدا ما را دوست دارد.ogg|خدا ما را دوست دارد]] - God houdt van ons

Superlative adjectives

Exercises

 * 1. Translate the following sentences into English:
 * 2. Use the comparative form of the adjectives below to make ...:
 * }
 * 2. Use the comparative form of the adjectives below to make ...:
 * }
 * }
 * }
 * }

 * Translate the following phrases into Persian.

 * Translate the following Persian phrases into English.
 * Translate the following Persian phrases into English.

 * }

Review
In this lesson, you learned comparative and superlative adjectives.

title: Persian/Lesson 17


text:
Using Firefox/Installation

Getting Firefox
Firefox can be downloaded from this page. Pressing the large green button will download Firefox. To get a version of Firefox in another language or operating system, see this page.

Microsoft Windows
The current Windows version of Firefox supports Windows 7 and later, and is distributed as an installer called, where (version) corresponds to the version of Firefox you're installing. You won't need to do this process after Firefox is installed; Firefox checks for updates in the background and installs the update on the next launch.

To install Firefox, double click on the installer and follow the installation instructions. Choosing the standard installation is recommended for most new users. This will install Firefox under Program Files, and create a desktop and start menu shortcut. These can be changed by clicking "Custom installation" instead.

You can run Firefox from the Program Files entry or by double-clicking the Firefox icon on your desktop. The first run of Firefox will give you the option of importing your settings from Microsoft Edge (or any other browser installed on your computer). Choosing 'Yes' will import all your bookmarks (also known as favorites), saved passwords, history and browsing options. After it finishes importing all these settings, the Firefox browser will start up and a dialog box will pop up alerting you that Firefox is not set as the default browser. Selecting 'Yes' will associate Firefox with web related files on your PC and Firefox will also open when links are selected from (most) external applications, such as from an instant messenger.

Firefox should automatically appear on Windows's Start Menu. However, if it doesn't, it can be manually set.

Mac OS X
Double click on the compressed Disk Image to mount it. Drag the Firefox application icon to the "Applications" folder on your hard drive. Do not double-click the Firefox icon inside the Disk Image; doing so can cause a program hang. To make Firefox always appear in the dock, drag the icon from the "Applications" folder to the dock.

Linux distributions
Many distributions include Firefox by default. Check your distribution's documentation for details. There should be a Firefox icon in your desktop environment's program menu.

If your distribution does not come with Firefox pre-installed, it may be in the repository. Go to your package manager and search for firefox. Look for a  or sometimes   package and install it. The package manager may tell you that the package will require dependencies to install. Once installed, Firefox may appear in the menu. If you are using your OS repository, you may not have access to the latest version, but should be safe and the system will manage the updates for you.

If your distribution does not include or carry Firefox, you can download it from the official Firefox website. Once the download is complete, decompress the file, which can be done usually by opening the file in a file archiver (such as ark or file roller) and extract it to another folder. Alternatively, typing tar -xvzf firefox- .tar.gz or tar -xvzf firefox* at a command line will generate directory named "firefox." This directory can be moved anywhere. Typing ./firefox in the shell from the install directory should launch Firefox. You may need to use chmod +x firefox  to give it execution permissions.

Usually, for manual installation you would put the files in the next locations: Executables: /usr/lib/firefox If not available: /lib/firefox Desktop file: /usr/share/applications/firefox.destop This can also be done with thunderbird, Mozilla's email client.

Your desktop file should look like this (based on Fedora's version):

Flatpak
There also is available a Flatpak version of Firefox. You can install it by running on your terminal  sudo flatpak install flathub org.mozilla.firefox . You will need the flathub repository for this. You can add it via  sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo . If you have not Flatpak you can get setup here:  https://www.flatpak.org/setup/ . There also is an snap version. You can install it via: <tt>sudo snap install firefox</tt>.

Those options will always keep you up to date.

Android
Firefox for Android can be installed from the Google Play store. It can also be installed on open source android repos like F-Droid.

Unlike many mobile browsers, Firefox for Android supports installing add-ons, allowing you to customize your mobile browsing experience.

iOS
iOS can be installed from the official app store. While Firefox on iOS is somewhat different from other versions, it still supports many features and syncing with Firefox for other platforms.

Other Operating Systems
Since the Mozilla Foundation makes the Firefox source code available, users can also compile and run Firefox on a variety of other architectures and operating systems. Building source code can be hard if you are a beginner in informatics, it will require building dependence packages and a compiler. Operating systems not supported by Firefox, but known to run the browser include:
 * Solaris (x86 and SPARC)
 * OS/2
 * AIX
 * FreeBSD
 * PC-BSD
 * NetBSD
 * BeOS
 * SkyOS
 * RISC OS (ARM)
 * OpenBSD

Firefox/Installation Mozilla Firefox/Installazione

title: Using Firefox/Installation


text:
Persian/Lesson 18

18درس

 * [[media:Fa-لثه.ogg|لثه]] - tandvlees
 * [[media:Fa-دانه.ogg|دانه]] - zaad
 * [[media:Fa-ستاره.ogg|ستاره]] - ster
 * [[media:Fa-پشت.ogg|پشت]] - achter
 * [[media:Fa-جلو.ogg|جلو]] - voor
 * [[media:Fa-ثريا.ogg|ثريا]] - Soraya meisjesnaam
 * [[media:Fa-كثيف.ogg|كثيف]] - vies
 * [[media:Fa-ممكن.ogg|ممكن]] - misschien- mogelijk
 * [[media:Fa-دهان.ogg|دهان]] - mond
 * [[media:Fa-بيماري.ogg|بيماري]] - ziekte
 * [[media:Fa-مريضي.ogg|مريضي]] - ziekte
 * [[media:Fa-درد.ogg|درد]] - pijn
 * [[media:Fa-صحبت.ogg|صحبت]] - gesprek
 * [[media:Fa-موقع.ogg|موقع]] - tijd
 * [[media:Fa-مزرعه.ogg|مزرعه]] - boerderij
 * [[media:Fa-شروع.ogg|شروع]] - begin
 * [[media:Fa-تمام.ogg|تمام]] - klaar
 * [[media:Fa-جمع.ogg|جمع]] - samen
 * [[media:Fa-خراب.ogg|خراب]] - kapot
 * [[media:Fa-ظهر.ogg|ظهر]] - middag
 * [[media:Fa-مدرسه.ogg|مدرسه]] - school
 * [[media:Fa-بچه ها.ogg|بچه ها]] - kinderen
 * [[media:Fa-آوردن.ogg|آوردن]] - brengen
 * [[media:Fa-لذت.ogg|لذت]] - lekker
 * [[media:Fa-باغبان.ogg|باغبان]] - tuinman
 * [[media:Fa-رضا.ogg|رضا]] - Reza jongensnaam
 * [[media:Fa-اضغر.ogg|اضغر]] - Asgar jongensnaam
 * [[media:Fa-غذا.ogg|غذا]] - eten

 * [[media:Fa-من مدرسه شروع كردم.ogg|من مدرسه شروع كردم]] - mijn school begint
 * [[media:Fa-ثريا مريض بود.ogg|ثريا مريض بود]] - Soraya was ziek
 * [[media:Fa-من يك مزرعه زيبا ديدم.ogg|من يك مزرعه زيبا ديدم]] - Ik zag een mooie boerderij
 * [[media:Fa-اصغر و رضا ضهر از مدرسه آمدند.ogg|اصغر و رضا ضهر از مدرسه آمدند]] - Asgar en Reza komen 's middags uit school
 * [[media:Fa-ستارها در آسمان هستند.ogg|ستارها در آسمان هستند]] - sterren zijn in de de hemel
 * [[media:Fa-لثه و دندان رضا مريض است.ogg|لثه و دندان رضا مريض است]] - het tandvlees en de tanden van Reza zijn ziek
 * [[media:Fa-مدرسه اصغر نزديك است.ogg|مدرسه اصغر نزديك است]] - De school van Asgar is dichtbij.

 * [[media:Fa-تكليف شب.ogg|تكليف شب]] - Huiswerk

 * [[media:Fa-خمله بسازيد.ogg|خمله بسازيد]] - Zinnen maken

 * [[media:Fa-مدرسه.ogg|مدرسه]] - [[media:Fa-خراب.ogg|خراب]] - [[media:Fa-ظهر.ogg|ظهر]] - [[media:Fa-لذت.ogg|لذت]] - [[media:Fa-باغبان.ogg|باغبان]]

 * [[media:Fa-فعل بسازيد.ogg|فعل بسازيد]] - werkwoord vervoegen

 * [[media:Fa-آوردن.ogg|آوردن]] - [[media:Fa-مريض ششدن.ogg|مريض ششدن]] - [[media:Fa-لذت بردن.ogg|لذت بردن]] - [[media:Fa-صحبت كردن.ogg|صحبت كردن]]

title: Persian/Lesson 18


text:
User:SpaceMoose

For info, go to w:en:User:SpaceMoose.

title: User:SpaceMoose


text:
Numerical Methods/Numerical Integration

<< Numerical Methods

Often, we need to find the integral of a function that may be difficult to integrate analytically (ie, as a definite integral) or impossible (the function only existing as a table of values).

Some methods of approximating said integral are listed below.

Trapezoidal Rule
Consider some function, possibly unknown, $$f(x)$$, with known values over the interval [a,b] at n+1 evenly spaced points xi of spacing $$h={(b-a) \over n}$$, $$x_0=a$$ and $$x_n=b$$.

Further, denote the function value at the ith mesh point as $$f(x_i)$$.

Using the notion of integration as "finding the area under the function curve", we can denote the integral over the ith segment of the interval, from $$x_{i-1}$$ to $$x_i$$ as:

$$\int_{x_{i-1}}^{x_i} f(x)\, dx$$ =  (1)

Since we may not know the antiderivative of $$f(x)$$, we must approximate it. Such approximation in the Trapezoidal Rule, unsurprisingly, involves approximating (1) with a trapezoid of width h, left height $$f(x_{i-1})$$, right height $$f(x_i)$$. Thus,

(1) $$\simeq {1 \over 2}h(f(x_{i-1}) + f(x_i))$$ =  (2)

(2) gives us an approximation to the area under one interval of the curve, and must be repeated to cover the entire interval.

For the case where n = 2,

$$\int_{x_a}^{x_b} f(x)\, dx \simeq {1 \over 2}h(f(x_0) + f(x_1)) + {1 \over 2}h(f(x_{1}) + f(x_2))$$ = (3)

Collecting like terms on the right hand side of (3) gives us:

$$ {1 \over 2} h (f(x_0) + f(x_1) + f(x_1) + f(x_2)) $$

or

$$ {1 \over 2} h (f(x_0) + 2f(x_1) + f(x_2)) $$

Now, substituting in for h and cleaning up,

$$ {(b-a) \over 2\cdot2} (f(x_0) + 2f(x_1) + f(x_2)) $$

To motivate the general version of the trapezoidal rule, now consider n = 4,

$$\int_{x_a}^{x_b} f(x)\, dx \simeq {1 \over 2}h(f(x_0) + f(x_1)) + {1 \over 2}h(f(x_1) + f(x_2)) + {1 \over 2}h(f(x_2) + f(x_3)) + {1 \over 2}h(f(x_3) + f(x_4))$$

Following a similar process as for the case when n=2, we obtain

$$ {(b-a) \over 2\cdot4} (f(x_0) + 2(f(x_1) + f(x_2) + f(x_3)) + f(x_4)) $$

Proceeding to the general case where n = N,

$$ \int_{x_a}^{x_b} f(x)\, dx \simeq {(b-a) \over 2 \cdot n} (f(x_0) + 2(\sum_{k=1}^Nf(x_k)) + f(x_n)) $$

This is an example of what the trapezoidal rule would represent graphicly, here $$ y = -x^2 + 5 $$.

Example
Approximate $$ \int_{0}^{1} x^3\, dx $$ to within 5%.

First, since the function can be exactly integrated, let us do so, to provide a check on our answer.

$$ \int_{0}^{1} x^3\, dx = \left [{x^4 \over 4}\right ]_0^1 = {1 \over 4} = 0.25 $$ = (4)

We will start with an interval size of 1, only considering the end points.

$$ f(0) = 0 $$

$$ f(1) = 1 $$

(4) $$ \simeq {(1-0) \over (2\cdot1)} (f(0) + f(1)) = {1 \over 2.1} (0 + 1) = {1 \over 2} = 0.5$$

Relative error = $$ \left |{ (0.5-0.25) \over 0.25} \right | = 1 $$

Hmm, a little high for our purposes. So, we halve the interval size to 0.5 and add to the list

$$ f(0.5) = 0.125 $$

(4) $$ \simeq {(1-0) \over (2\cdot2)} (f(0) + 2f(0.5) + f(1)) = {1 \over 2\cdot2} (0 + 2(0.125) + 1) = {1.25 \over 4} = 0.3125$$

Relative error = $$ \left |{ (0.3125-0.25) \over 0.25} \right | = 0.25 $$

Still above 0.01, but vastly improved from the initial step. We continue in the same fashion, calculating $$f(0.25)$$ and $$f(0.75)$$, rounding off to four decimal places.

$$ f(0.25) = 0.0156 $$

$$ f(0.75) = 0.4219 $$

(4) $$ \simeq {(1-0) \over (2\cdot4)} ( 0 + 2(0.0156 + 0.125 + 0.4219) + 1) = {1 \over 8} (2.2150) = 0.2656 $$

Relative error = $$ \left |{ (0.2656-0.25) \over 0.25} \right | = 0.0624 $$

We are well on our way. Continuing, with interval size 0.125 and rounding as before,

$$ f(0.125) = 0.0020 $$

$$ f(0.375) = 0.0527 $$

$$ f(0.625) = 0.2441 $$

$$ f(0.875) = 0.6699 $$

(4) $$ \simeq {(1-0) \over (2\cdot8)} (0 + 2(0.0020 + 0.0156 + 0.0527 + 0.0125 + 0.2441 + 0.4219 + 0.6699) + 1) = {1 \over 16} (4.0624) = 0.2539 $$

Relative error = $$ \left |{ (0.2539-0.25) \over 0.25} \right | = 0.0156 $$

Since our relative error is less than 5%, we stop.

Error Analysis
Let y=f(x) be continuous, well-behaved and have continuous derivatives in [x0,xn]. We expand y in a Taylor series about x=x0,thus- $$\int_{x_0}^{x_1}y\, dx=\int_{x_0}^{x_1}[y_0+(x-x_0)y'_0+(x-x_0)^2y''_0/2!+......]\,dx$$

Simpson's Rule
Consider some function $$y=f(x)$$ possibily unknown with known values over the interval [a,b] at n+1 evently spaced points then it defined as

$$\int_{x_0}^{x_n} f(x)\, dx \simeq {1 \over 3}h \bigg\{f(x_0) + f(x_n) + 2\Big(f(x_2) + f(x_4) + ... + f(x_{n-2})\Big) + 4\Big(f(x_1) + f(x_3) + ... + f(x_{n-1})\Big)\bigg\}$$

where $$h={(b-a) \over n}$$ and $$x_0=a$$ and $$x_n=b$$.

Example
Evaluate $$ \int\limits_0^{1.2} {x\left( {8 - x^3 } \right)^{\frac{1} {2}} dx} $$ by taking $$n = 6$$ ($$n$$ must be even)

Solution: Here $$f(x) = x\left( {8 - x^3 } \right)^{\frac{1}{2}} $$

Since $$a = 0$$ & $$b = 1.2$$ so $$h = \frac{n} = \frac{6} = 0.2$$

Now when $$a = x_0 = 0$$ then $$ f(x_0) = 0$$

And since $$x_n = x_{n - 1}  + h$$, therefore for $$x_1 = 0.2$$, $$x_2 = 0.4$$ , $$x_3 = 0.6$$ , $$x_4 = 0.8$$ , $$x_5 = 1$$ , $$x_6 = b = 1.2$$ the corresponding values are $$f(x_1) = 0.7784$$ , $$f(x_2) = 1.58721$$ , $$f(x_3) = 1.6740$$ , $$f(x_4) = 2.1891$$ , $$f(x_5) = 2.6458$$ , $$f(x_6) = 3.0053$$

Incomplete ... Completed soon

Simpson's 3/8
The numerical integration technique known as "Simpson's 3/8 rule" is credited to the mathematician Thomas Simpson (1710-1761) of Leicestershire, England. His also worked in the areas of numerical interpolation and probability theory.

Theorem (Simpson's 3/8 Rule)  Consider  over, where , , and. Simpson's 3/8 rule is

.

This is an numerical approximation to the integral of over  and we have the expression

.

The remainder term for Simpson's 3/8 rule is,  where  lies somewhere between , and have the equality

.

Proof Simpson's 3/8 Rule  Simpson's 3/8 Rule

Composite Simpson's 3/8 Rule

Our next method of finding the area under a curve is by approximating that curve with a series of cubic segments that lie above the intervals. When several cubics are used, we call it the composite Simpson's 3/8 rule.

Theorem (Composite Simpson's 3/8 Rule) Consider  over. Suppose that the interval is subdivided into  subintervals    of equal width    by using the equally spaced sample points    for. The composite Simpson's 3/8 rule for subintervals is

.

This is an numerical approximation to the integral of over  and we write

.

Proof Simpson's 3/8 Rule  Simpson's 3/8 Rule

Remainder term for the Composite Simpson's 3/8 Rule

Corollary (Simpson's 3/8 Rule:  Remainder term)   Suppose that  is subdivided into  subintervals    of width. The composite Simpson's 3/8 rule

.

is an numerical approximation to the integral, and

.

Furthermore, if,  then there exists a value  with    so that the error term    has the form

.

This is expressed using the "big " notation.

Remark. When the step size is reduced by a factor of the remainder term   should be reduced by approximately.

Algorithm Composite Simpson's 3/8 Rule. To approximate the integral

,

by sampling   at the    equally spaced sample points   for ,  where. Notice that   and.

Animations (Simpson's 3/8 Rule Simpson's 3/8 Rule). Internet hyperlinks to animations.

Computer Programs Simpson's 3/8 Rule  Simpson's 3/8 Rule

Mathematica Subroutine (Simpson's 3/8 Rule). Object oriented programming.

Example 1. Numerically approximate the integral   by using Simpson's 3/8 rule with  m = 1, 2, 4. Solution 1.

Example 2. Numerically approximate the integral   by using Simpson's 3/8 rule with  m = 10, 20, 40, 80,  and 160. Solution 2.

Example 3. Find the analytic value of the integral   (i.e. find the "true value"). Solution 3.

Example 4. Use the "true value" in example 3 and find the error for the Simpson' 3/8 rule approximations in example 2. Solution 4.

Example 5. When the step size is reduced by a factor of the error term   should be reduced by approximately. Explore this phenomenon. Solution 5.

Example 6. Numerically approximate the integral by using Simpson's 3/8 rule with  m = 1, 2, 4. Solution 6.

Example 7. Numerically approximate the integral   by using Simpson's 3/8 rule with  m = 10, 20, 40, 80,  and 160. Solution 7.

Example 8. Find the analytic value of the integral   (i.e. find the "true value"). Solution 8.

Example 9. Use the "true value" in example 8 and find the error for the Simpson's 3/8 rule approximations in example 7. Solution 9.

Example 10. When the step size is reduced by a factor of the error term   should be reduced by approximately. Explore this phenomenon. Solution 10.

Various Scenarios and Animations for Simpson's 3/8 Rule.

Example 11. Let   over. Use Simpson's 3/8 rule to approximate the value of the integral. Solution 11.

Animations (Simpson's 3/8 Rule Simpson's 3/8 Rule). Internet hyperlinks to animations.

Research Experience for Undergraduates

Simpson's Rule for Numerical Integration Simpson's Rule for Numerical Integration  Internet hyperlinks to web sites and a bibliography of articles.

References and further reading

 * Eric W. Weisstein. "Trapezoidal Rule." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/TrapezoidalRule.html
 * Davis, P. J., & Rabinowitz, P. (2007). Methods of numerical integration. Courier Corporation.

Main Page - Mathematics bookshelf - Numerical Methods

title: Numerical Methods/Numerical Integration


text:
Talk:Numerical Methods/Numerical Integration

Well, there's a start. Bend, fold, spindle and mutilate as desired. Could someone with an account please be so kind as to add some graphics to make things clearer?

A recent edit to this page seems to be a copy-and-paste from "Simpson's 3/8 Rule for Numerical Integration" by John H. Mathews 2004. What should we do about it? --DavidCary (talk) 18:40, 17 March 2009 (UTC)


text:
Ada Programming/Types/mod

Description
Unsigned integers in Ada have a value range from 0 to some positive number (not necessarily 1 subtracted from some power of 2). They are defined using the keyword because they implement a wrap-around arithmetic.

Modulus

where ' is 0 and ' is Modulus - 1.

Wrap-around arithmetic means that 'Last + 1 = 0 = 'First, and 'First - 1 = 'Last. Additionally to the normal arithmetic operators, bitwise, and  are defined for the type (see below).

The predefined package (RM ) presents unsigned integers based on powers of 2

Unsigned_n  2**n;

for which also shift and rotate operations are defined. The values of n depend on compiler and target architecture.

You can use to sub-range a modular type:

Byte  256; Half_Byte Byte  0 .. 127;

But beware: the Modulus of Half_Byte is still 256! Arithmetic with such a type is interesting to say the least.

Bitwise Operations
Be very careful with bitwise operators, , , , when the modulus is not a power of two. An example might exemplify the problem.

Unsigned  2**5;   -- modulus 32 X: Unsigned := 2#10110#;    -- 22 X       = 2#01001#      -- bit reversal: 9 ( = 31 - 22 ) as expected

The other operators work similarly.

Now take a modulus that is not a power of two. Naive expectations about the results may lead out of the value range. As an example take again the operator (see  the RM for the others):

Unsigned  5; X: Unsigned := 2#001#; -- 1, bit reversal: 2#110# = 6 leads out of range

The definition of is therefore:

X = Unsigned'Last – X -- here: 4 – 1 = 2#011#

Wikibook

 * Ada Programming
 * Ada Programming/Types
 * Ada Programming/Keywords/mod

Ada Reference Manual

|Mod

title: Ada Programming/Types/mod


text:
Ada Programming/Types/Enumeration

An enumeration type is defined as a list of possible values:

Primary_Color (Red, Green, Blue);

Like for numeric types, where e.g. 1 is an integer literal, Red, Green and Blue are called the literals of this type. There are no other values assignable to objects of this type.

Operators and attributes
Apart from equality ("="), the only operators on enumeration types are the ordering operators: "<", "<=", "=", "/=", ">=", ">", where the order relation is given implicitly by the sequence of literals: Each literal has a position, starting with 0 for the first, incremented by one for each successor. This position can be queried via the 'Pos attribute; the inverse is 'Val, which returns the corresponding literal. In our example:

Primary_Color' (Red) = 0 Primary_Color' (0)  = Red

There are two other important attributes: and  (don't confuse  with ). returns the string representation of the value (in capital letters), is the inverse:

Primary_Color' ( Red ) = "RED" Primary_Color' ("Red") = Red

These attributes are important for simple IO (there are more elaborate IO facilities in for enumeration types). Note that, since Ada is case-insensitive, the string given to 'Value can be in any case.

Enumeration literals
Literals are overloadable, i.e. you can have another type with the same literals.

Traffic_Light (Red, Yellow, Green);

Overload resolution within the context of use of a literal normally resolves which Red is meant. Only if you have an unresolvable overloading conflict, you can qualify with special syntax which Red is meant:

Primary_Color'(Red)

Like many other declarative items, enumeration literals can be renamed. In fact, such a literal is actually a function, so it has to be renamed as such:

Red P.Primary_Color  P.Red;

Here, Primary_Color is assumed to be defined in package P, which is visible at the place of the renaming declaration. Renaming makes Red directly visible without necessity to resort the use-clause.

Note that redeclaration as a function does not affect the staticness of the literal.

Characters as enumeration literals
Rather unique to Ada is the use of character literals as enumeration literals:

ABC ('A', 'B', 'C');

This literal 'A' has nothing in common with the literal 'A' of the predefined type Character (or Wide_Character).

Every type that has at least one character literal is a character type. For every character type, string literals and the concatenation operator "&" are also implicitly defined.

My_Character (No_Character, 'a', Literal, 'z'); My_String  (Positive  <>)  My_Character; S: My_String := "aa" & Literal & "za" & 'z'; T: My_String := ('a', 'a', Literal, 'z', 'a', 'z');

In this example, S and T have the same value.

Ada's Character type is defined that way. See Ada Programming/Libraries/Standard.

Booleans as enumeration literals
Also Booleans are defined as enumeration types:

Boolean (False, True);

There is special semantics implied with this declaration in that objects and expressions of this type can be used as conditions. Note that the literals False and True are not Ada keywords.

Thus it is not sufficient to declare a type with these literals and then hope objects of this type can be used like so:

My_Boolean (False, True); Condition: My_Boolean; Condition -- wrong, won't compile

If you need your own Booleans (perhaps with special size requirements), you have to derive from the predefined Boolean:

My_Boolean  Boolean; Condition: My_Boolean; Condition -- OK

Enumeration subtypes
You can use  to subtype an enumeration type:

Capital_Letter Character  'A' .. 'Z';

Day_Of_Week (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday); Working_Day Day_Of_Week  Monday .. Friday;

Using enumerations
Enumeration types being scalar subtypes, type attributes such as First and Succ will allow stepping through a subsequence of the values.

Day_Of_Week Sunday ISO (False); Day_Of_Week (Sunday) ISO (True); Tuesday .. Saturday Program_Error; ;

A loop will automatically step through the values of the subtype's range. Filtering week days to include only working days with an even position number:

Day Working_Day Day_Of_Week (Day) 2  0 Work_In_Backyard; ;      ;

Enumeration types can be used as array index subtypes, yielding a table feature:

Officer_ID  0 .. 50;   Schedule   (Working_Day)  Officer_ID;

Wikibook

 * Ada Programming
 * Ada Programming/Types
 * Ada Programming/Libraries/Standard
 * Ada_Programming/Attributes/'First
 * Ada_Programming/Attributes/'Last
 * Ada_Programming/Attributes/'Pred
 * Ada_Programming/Attributes/'Succ
 * Ada_Programming/Attributes/'Img
 * Ada_Programming/Attributes/'Image
 * Ada_Programming/Attributes/'Value
 * Ada_Programming/Attributes/'Pos
 * Ada_Programming/Attributes/'Val
 * Ada_Programming/Attributes/'Enum_Rep
 * Ada_Programming/Attributes/'Enum_Val

Ada Reference Manual

|Enumeration

Programación en Ada/Tipos/Enumeraciones

title: Ada Programming/Types/Enumeration


text:
Ada Programming/Types/digits

Description
To define a floating point type, you only have to say how many digits are needed, i.e. you define the relative precision:

Num_Digits

If you like, you can declare the minimum range needed as well:

Num_Digits range Low .. High

This facility is a great benefit of Ada over (most) other programming languages. In other languages, you just choose between "float" and "long float", and what most people do is:
 * choose float if they don't care about accuracy
 * otherwise, choose long float, because it is the best you can get

In either case, you don't know what accuracy you get.

In Ada, you specify the accuracy you need, and the compiler will choose an appropriate floating point type with at least the accuracy you asked for. This way, your requirement is guaranteed. Moreover, if the computer has more than two floating point types available, the compiler can make use of all of them.

Wikibook

 * Ada Programming
 * Ada Programming/Types
 * Ada Programming/Types/range
 * Ada Programming/Types/delta
 * Ada Programming/Types/mod
 * Ada Programming/Keywords/digits

Ada Reference Manual
|Digits

Programación en Ada/Tipos/Coma flotante

title: Ada Programming/Types/digits


text:
Parallel Computing and Computer Clusters/Theory

Typical real-world applications
What do people do with clusters of computers?

 * The web
 * Search engine indexes
 * Databases
 * Scientific and engineering work
 * Weather modeling and prediction
 * Molecular modeling
 * Product design and simulation

Parallel Programming Models
There are generally two ways to accomplish parallel architectures. They can be either used separately or the architecture can be any combination of the two. The shared memory model is a model where all processors in the architecture share memory and address spaces. All the processors in the architecture can access all of the attached main memory. The message passing model is a model that puts the information into messages. Discrete units of information that can be passed around to the various CPU's in the architecture. Both architectures have their advantages and disadvantages.

Shared memory
Shared memory models are models where all CPU's can address the main memory of the machine. Generally the main memory is accessible though a bus. This allows all CPU's to use memory addresses, and addresses can be passed around to different CPU's. Having all CPU's access the memory through a bus introduces a number of issues. Such as bandwidth of the bus, clearly if a bus is small and there are a large number of CPU's then optimization of the CPU usage is going to be difficult to achieve. Often bus communication is augmented with local cache. Processor L1 and L2 cache, this then introduces the challenge of cache coherence. How to assure that the data in main memory and cache are up to date enough, such that all CPU's will see the appropriate data. There are several strategies to proper and optimized operation here.

Message passing
Message passing systems have memory that is either not directly connected to the CPU or even possibly spread across various geographic locations. This results in a system of send and receives, where the data is packed into a message and sent across a network to various other machines in the network.

Hadoop
Hadoop at it's core is a combination of two open source frameworks, MapReduce and HDFS. Both are open source implementations based on white papers published by Google. MapReduce is a processing framework based on a Google framework of the same name. MapReduce takes the data stored in HDFS and processes it on each node in the cluster. MapReduce consists of two procedures defined by the programmer. The Map and the Reduce. Mappers take lines in the form of keys and values. Mappers also emit keys and values. The Reducer has an input format that is a key and a vector of all the values for that key that were emitted by the mapper. HDFS is the Hadoop filesystem. HDFS is an implementation of Google distributed filesystem. HDFS is a software implementation that distributes the storage of files across multiple nodes in a cluster. There is a default replication factor of three to assure with a high degree of certainty that no data is lost.

Mathematics of parallel processing
Parallel processing is the simultaneous execution of the same task (split up and specially adapted) on multiple processors in order to obtain faster results. The parallel nature can come from a single machine with multiple processors or multiple machines connected together to form a cluster.

Amdahl's law
Amdahl's law is a demonstration of the law of diminishing returns: while one could speed up part of a computer a hundred-fold or more, if the improvement only affects 12% of the overall task, the best the speedup could possibly be is $$\frac{1}{1 - 0.12} = 1.136$$ times faster.

More technically, the law is concerned with the speedup achievable from an improvement to a computation that affects a proportion P of that computation where the improvement has a speedup of S. (For example, if an improvement can speedup 30% of the computation, P will be 0.3; if the improvement makes the portion affected twice as fast, S will be 2.) Amdahl's law states that the overall speedup of applying the improvement will be

 * $$\frac{1}{(1 - P) + \frac{P}{S}}$$.

To see how this formula was derived, assume that the running time of the old computation was 1, for some unit of time. The running time of the new computation will be the length of time the unimproved fraction takes (which is 1 − P) plus the length of time the improved fraction takes. The length of time for the improved part of the computation is the length of the improved part's former running time divided by the speedup, making the length of time of the improved part P/S. The final speedup is computed by dividing the old running time by the new running time, which is what the above formula does.

Parallelization
In the special case of parallelization, Amdahl's law states that if F is the fraction of a calculation that is sequential (i.e. cannot benefit from parallelisation), and (1 − F) is the fraction that can be parallelised, then the maximum speedup that can be achieved by using N processors is

 * $$\frac{1}{F + (1-F)/N}$$.

In the limit, as N tends to infinity, the maximum speedup tends to 1/F. In practice, price/performance ratio falls rapidly as N is increased once (1 − F)/N is small compared to F.

As an example, if F is only 10%, the problem can be sped up by only a maximum of a factor of 10, no matter how large the value of N used. For this reason, parallel computing is only useful for either small numbers of processors, or problems with very low values of F: so-called embarrassingly parallel problems. A great part of the craft of parallel programming consists of attempting to reduce F to the smallest possible value.


text:
Ada Programming/Types/delta

Description
A fixed point type defines a set of values that are evenly spaced with a given absolute precision. In contrast, floating point values are all spaced according to a relative precision.

The absolute precision is given as the delta of the type. There are two kinds of fixed point types, ordinary and decimal.

For Ordinary Fixed Point types, the delta gives a hint to the compiler how to choose the small value if it is not specified: It can be any integer power of two not greater than delta. You may specify the small via an attribute clause to be any value not greater than delta. (If the compiler cannot conform to this small value, it has to reject the declaration.)

For Decimal Fixed Point types, the small is defined to be the delta, which in turn must be an integer power of ten. (Thus you cannot specify the small by an attribute clause.)

For example, if you define a decimal fixed point type with a delta of 0.1, you will be able to accurately store the values 0.1, 1.0, 2.2, 5.7, etc. You will not be able to accurately store the value 0.01. Instead, the value will be rounded down to 0.0.

If the compiler accepts your fixed point type definition, it guarantees that values represented by that type will have at least the degree of accuracy specified (or better). If the compiler cannot support the type definition (e.g. due to limited hardware) then a compile-time error will result.

Ordinary Fixed Point
For an ordinary fixed point, you just define the delta and a range:

Delta Low .. High

The delta can be any real value — for example you may define a circle with one arcsecond resolution with:

1.0 / (60 * 60) 0.0 .. 360.0

[There is one rather strange rule about fixed point types: Because of the way they are internally represented, the range might only go up to. This is a bit like a circle — the 0° and 360° mark is also the same.]

It should be noted that in the example above the smallest possible value used is not $$\frac{1}{60^2} = \frac{1}{3600}$$. The compiler will choose a smaller value which, by default, is an integer power of 2 not greater than the delta. In our example this could be $$2^{-12} = \frac{1}{4096}$$. In most cases this should render better performance but sacrifices precision for it.

If this is not what you wish and precision is indeed more important, you can choose your own small value via the attribute clause '.

Angle  Pi/2.0**31  -Pi .. Pi; Angle'Small Pi/2.0**31;

As internal representation, you will get a 32 bit signed integer type.

Decimal Fixed Point
You define a decimal fixed point by defining the delta and the number of digits needed:

Delta Num_Digits

Delta must be a positive or negative integer power of 10 — otherwise the declaration is illegal.

10.0**(+2) 12  10.0**(-2)  12

If you like, you can also define the range needed:

Delta_Value Num_Digits  Low .. High

Differences between Ordinary and Decimal Fixed Point Types
There is an alternative way of declaring a "decimal" fixed point: You declare an ordinary fixed point and use an integer power of 10 as '. The following two declarations are equivalent with respect to the internal representation:

-- decimal fixed point Duration  10.0**(-9)  9;

-- ordinary fixed point Duration  10.0**(-9)  -1.0 .. 1.0; Duration'  10.0**(-9);

You might wonder what the difference then is between these two declarations. The answer is:

None with respect to precision, addition, subtraction, multiplication with integer values.

The following is an incomplete list of differences between ordinary and decimal fixed point types.

 * Decimal fixed point types are intended to reflect typical COBOL declarations with a given number of digits.

 * Truncation is required for decimal, not for ordinary, fixed point in multiplication and division (RM ) and type conversions. Operations on decimal fixed point are fully specified, which is not true for ordinary fixed point.

 * The following attributes are only defined for decimal fixed point: T'Digits (RM ) corresponds to the number of decimal digits that are representable; T'Scale (RM, taken from COBOL) indicates the position of the point relative to the rightmost significant digits; T'Round (RM ) can be used to specify rounding on conversion.

 * Package Decimal (RM ), which of course applies only to decimal fixed point, defines the decimal Divide generic procedure. If annex F is supported (GNAT does), at least 18 digits must be supported (there is no such rule for fixed point).

 * Decimal_IO (RM ) has semantics different from Fixed_IO (RM ).

 * Static expressions must be a multiple of the Small for decimal fixed point.

Conclusion: For normal numeric use, an ordinary fixed point (probably with 'Small defined) should be defined. Only if you are interested in COBOL like use, i.e. well defined deterministic decimal semantics (especially for financial computations, but that might apply to cases other than money) should you take decimal fixed point.

Wikibook

 * Ada Programming
 * Ada Programming/Types
 * Ada Programming/Types/range
 * Ada Programming/Types/digits
 * Ada Programming/Types/mod
 * Ada Programming/Keywords/delta
 * Ada Programming/Attributes/'Small

Ada 2005 Reference Manual

|Delta

Programación en Ada/Tipos/Coma fija

title: Ada Programming/Types/delta


text:
Persian/Lesson 19

درس 19

 * [[media:Fa-طاهره.ogg|طاهره]] - Thohereh meisjesnaam
 * [[media:Fa-حاضر.ogg|حاضر]] - klaar
 * [[media:Fa-بعضي.ogg|بعضي]] - sommige
 * [[media:Fa-عصر.ogg|عصر]] - middag
 * - blij
 * [[media:Fa-غمگين.ogg|غمگين]] - verdriet
 * [[media:Fa-اجازه.ogg|اجازه]] - mag
 * [[media:Fa-تشكر.ogg|تشكر]] - dank
 * [[media:Fa-شناخت.ogg|شناخت]] - ken
 * [[media:Fa-آموزگار.ogg|آموزگار]] - lerares, leraar
 * [[media:Fa-معلم.ogg|معلم]] - lerares, leraar
 * [[media:Fa-حياط.ogg|حياط]] - tuin
 * [[media:Fa-وسط.ogg|وسط]] - middel
 * [[media:Fa-قله.ogg|قله]] - bergpiek
 * [[media:Fa-كشتي.ogg|كشتي]] - schip
 * [[media:Fa-باغ.ogg|باغ]] - bloementuin
 * [[media:Fa-تيغ.ogg|تيغ]] - doorn
 * [[media:Fa-عمو.ogg|عمو]] - oom
 * [[media:Fa-ميوه.ogg|ميوه]] - fruit
 * [[media:Fa-من از ميوها سيب را بيشتر دوست دارم.ogg|من از  ميوها سيب را بيشتر دوست دارم]] - ik vind een appel het lekkerste fruit
 * [[media:Fa-مادر بزرگم باغ انار و سيب دارد.ogg|مادر بزرگم باغ انار و سيب دارد]] - mij oma heeft een boomgaard met appels en granaatappels
 * [[media:Fa-گلها در باغ تيغ داردند و بايد ما موا ظب باشيم.ogg|گلها در باغ  تيغ داردند و بايد ما موا ظب باشيم]] - we moeten oppassen voor doornen in de tuin
 * [[media:Fa-زنگ تفريح بود وما بازي كرديم.ogg|زنگ تفريح بود وما بازي كرديم]] - Wij spelen in de pauze
 * [[media:Fa-وهمه در زنگ تفريح با هم آشنا هستند.ogg|وهمه در زنگ تفريح با هم آشنا هستند]] - in de pauze kennen alle kinderen elkaar
 * [[media:Fa-وفاطمه وطاهره با صابون دست و صورت خود را مي شو يند.ogg|وفاطمه وطاهره با صابون دست و صورت خود را مي شو يند]] - Tahereh en Fatimeh wassen hun handen met zeep

 * [[media:Fa-تكليف شب.ogg|تكليف شب]] - huiswerk

 * [[media:Fa-جمله بسازيد.ogg|جمله بسازيد]] - zinnen maken

[[media:Fa-آشنا.ogg|آشنا]] - [[media:Fa-ظهر.ogg|ظهر]] - [[media:Fa-درد.ogg|درد]] - [[media:Fa-بازي كردن.ogg|بازي كردن]]

 * [[media:Fa-فعل بسازيد.ogg|فعل بسازيد]] - werkwoorden vervoegen

[[media:Fa-دوست بودن.ogg|دوست بودن]] - [[media:Fa-ميوه خوردن.ogg|ميوه خوردن]] - [[media:Fa-تفريح كردن.ogg|تفريح كردن]] - [[media:Fa-خداحافظي كردن.ogg|خداحافظي كردن]]

title: Persian/Lesson 19


text:
Persian/Lesson 20

درس   20

 * [[media:Fa-فصل.ogg|فصل]] - seizoen
 * [[media:Fa-بهار.ogg|بهار]] - lente
 * [[media:Fa-تابستان.ogg|تابستان]] - zomer
 * [[media:Fa-پائئز.ogg|پائئز]] - herfst
 * [[media:Fa-زمستان.ogg|زمستان]] - winter
 * [[media:Fa-گرم.ogg|گرم]] - warm
 * [[media:Fa-سرد.ogg|سرد]] - koud
 * [[media:Fa-هوا.ogg|هوا]] - weer
 * [[media:Fa-شكوفه.ogg|شكوفه]] -bloesem
 * [[media:Fa-عيد.ogg|عيد]] - feest
 * [[media:Fa-عيد نوروز.ogg|عيد نوروز]] nieuwjaar
 * [[media:Fa-برف.ogg|برف]] -sneeuw
 * [[media:Fa-چشمه.ogg|چشمه]] - bron
 * [[media:Fa-برگ.ogg|برگ]] - blad
 * [[media:Fa-در بهار هوا خوب است.ogg|در بهار هوا خوب است]] - in de lente is het mooi weer
 * [[media:Fa-وعيد نوروزاول بهار است.ogg|وعيد نوروزاول بهار است]] - Het Iraanse nieuwjaar begint op de eerste dag van de lente
 * [[media:Fa-در بهار درختان شكوفه ميآورد.ogg|در بهار  درختان شكوفه ميآورد]] - in de lente hebben bomen bloesem
 * [[media:Fa-در تابستان هوا گرم است.ogg|در تابستان هوا گرم است]] - in de zomer is het weer warm
 * [[media:Fa-وميوه ها در تابستان رسيده مي شوند.ogg|وميوه ها در تابستان رسيده مي شوند]] - in de zomer rijpt het fruit
 * [[media:Fa-در پائئز هوا سرد است وباد مي آيد.ogg|در پائئز هوا سرد است وباد مي آيد]] - in de herfst is het koud en komt de wind
 * [[media:Fa-ودر زمستان هوا سرد است و برف و با ران مي بارد.ogg|ودر زمستان هوا سرد است و برف و با ران  مي بارد]] - in de winter is het koud en komt er regen en sneeuw

 * [[media:Fa-تكليف شب.ogg|تكليف شب]] - huiswerk
 * [[media:Fa-جمله بسازيد.ogg|جمله بسازيد]] - zinnen maken

[[media:Fa-بهار.ogg|بهار]] -  [[media:Fa-پائئز.ogg|پائئز]] -  [[media:Fa-زمستان.ogg|زمستان]]  -  [[media:Fa-تابستان.ogg|تابستان]]
 * [[media:Fa-فعل بسازيد.ogg|فعل بسازيد]] - werkwoord vervoegen

[[media:Fa-باران باريدن.ogg|باران باريدن]] - [[media:Fa-تفريح كردن.ogg|تفريح كردن]] - [[media:Fa-ميوه خوردن.ogg|ميوه خوردن]] - [[media:Fa-باغباني كردن.ogg|باغباني كردن]]

title: Persian/Lesson 20


text:
Persian/Lesson 21

21

 * [[media:Fa-ايام هفته.ogg|ايام هفته]] - naam van de dagen van de week
 * [[media:Fa-شنبه.ogg|شنبه]] zaterdag
 * [[media:Fa-يكشنبه.ogg|يكشنبه]] - zondag
 * [[media:Fa-دوشنبه.ogg|دوشنبه]] - maandag
 * [[media:Fa-سه شنبه.ogg|سه شنبه]] - dinsdag
 * [[media:Fa-چهار شنبه.ogg|چهار شنبه]] - woensdag
 * [[media:Fa-پنج شنبه.ogg|پنج شنبه]] - donderdag
 * [[media:Fa-جمعه.ogg|جمعه]] - vrijdag

 * [[media:Fa-مـــــاها.ogg|مـــــاها]] - naam van de maanden
 * [[media:Fa-بهار.ogg|بهار]] - lente

 * [[media:Fa-فروردين.ogg|فروردين]] - farvardien
 * [[media:Fa-ارديبهشت.ogg|ارديبهشت]] - ordibehesht
 * [[media:Fa-خرداد.ogg|خرداد]] - khordad

 * [[media:Fa-تابستان.ogg|تابستان]] - zomer

 * [[media:Fa-تير.ogg|تير]] - tier
 * [[media:Fa-مرداد.ogg|مرداد]] - mordad
 * [[media:Fa-شهريور.ogg|شهريور]]- shahrivar

 * [[media:Fa-پائئز.ogg|پائئز]] - herfst

 * [[media:Fa-مهر.ogg|مهر]] - mehr
 * [[media:Fa-آبان.ogg|آبان]] - aban
 * [[media:Fa-آذر.ogg|آذر]] - azar

 * [[media:Fa-زمستان.ogg|زمستان]] - winter

 * [[media:Fa-دي.ogg|دي]] - dey
 * [[media:Fa-بهمن.ogg|بهمن]] - bahman
 * [[media:Fa-اسفند.ogg|اسفند]] - esfand

het alfabet:
 * [[media:Fa-آا.ogg|آا]] - a
 * [[media:Fa-ب.ogg|ب]] - b
 * [[media:Fa-پ.ogg|پ]] - p
 * [[media:Fa-ت.ogg|ت]] - t
 * [[media:Fa-ث.ogg|ث]] -s, wordt beschreven als de s van Soraya
 * [[media:Fa-ج.ogg|ج]] - dj, uitspreken als de engelse j in jungle
 * [[media:Fa-چ.ogg|چ]] - ch, uitspreken als engelse ch in child
 * [[media:Fa-ر.ogg|ر]] - r
 * [[Media:Fa-ز.ogg|ز]] -z
 * [[media:Fa-ژ.ogg|ژ]] - zj
 * [[media:Fa-س.ogg|س]] -s
 * [[media:Fa-ش.ogg|ش]] - sj, uitspreken als de eerste twee letters van het engelse woord shovel
 * [[media:Fa-ص.ogg|ص]] - s
 * [[media:Fa-ض.ogg|ض]] - z
 * [[media:Fa-ط.ogg|ط]] - t
 * [[media:Fa-ع.ogg|ع]] - a
 * [[media:Fa-غ.ogg|غ]] - gh, klank tussen een k en h in, wordt achterin de keel uitgesproken
 * [[media:Fa-ف.ogg|ف]] - f
 * [[media:Fa-ق.ogg|ق]] - gh, klank tussen een k en h in, wordt achterin de keel uitgesproken
 * [[media:Fa-ك.ogg|ك]] - k, als de engelse c in cat
 * [[media:Fa-گ.ogg|گ]] - zachte k, als de engelse g in god
 * [[media:Fa-ل.ogg|ل]] - L
 * [[media:Fa-م.ogg|م]] - m
 * [[media:Fa-ن.ogg|ن]] - n
 * [[media:Fa-و.ogg|و]] - w, wordt soms als een oe uitgesproken
 * [[media:Fa-ه.ogg|ه]] - h
 * [[media:Fa-ي.ogg|ي]] - i, wordt soms als een nederlandse j uitgesproken

de cijfers:
 * 1 = (yek) یک
 * 2 = (do) دو
 * 3 = (se) سه
 * 4 = (cahâr) چهار
 * 5 = (panj) پنج
 * 6 = (šeš) شش
 * 7 = (haft) هفت
 * 8 = (hašt) هشت
 * 9 = (noh) نه
 * 10 = (dah) ده

 * 11 = (yâzdah) یازده
 * 12=(davâzdah) دوازده
 * 13 = (sizdah) سیزده
 * 14 = (cahârdah) چهارده
 * 15 = (pânzdah) پانزده
 * 16 = (šânzdah) شانزده
 * 17 = (hafdah) هفده
 * 18 = (haždah) هجده
 * 19 = (nuzdah) نوزده
 * 20 = (bist) بیست

 * 25 = (bisto panj) بیست و پنج

De tientallen:
 * 30 = (si) سی
 * 40 = (cehel) چهل
 * 50 = (panjâh) پنجاه
 * 60 = (šast) شصت
 * 70 = (haftâd) هفتاد
 * 80 = (haštâd) هشتاد
 * 90 = (navad) نود

De honderdtallen:
 * 100 = (sad) صد
 * 200 = (devist) دویشت
 * 300 = (sisad) شیصد
 * 400 = (cahârsad) چهارصد
 * 500 = (pânsad) پانصد
 * 600 = (šešsad) شش صد
 * 700 = (haftsad) هفت صد
 * 800 = (haštsad) هشت صد
 * 900 = (nohsad) نه صد
 * 1000 = (hezâr) هزار

 * 2000 = (do hezâr) دو هزار
 * 10.000 = (dah hezâr) ده هزار
 * 100.000 = (sad hezâr) صد هزار

 * 1.000.000 = (miliyon) ملیون

title: Persian/Lesson 21


text:
Cryptography/Social Engineering and Coercion

In encryption, the weakest link is almost always a person.

While you could spend many hours attempting to decipher an encrypted message, or intercept a password, you can easily trick a person into telling you this information.

Suppose Bob works for a large company and encrypts document E with key K. Suppose Eve, wishing to decrypt document E, calls Bob and pretends to work for the company's information security department. Eve would pretend a problem existed with the computers, servers, etc. and ask Bob for his key, K, which she would use to decrypt E. This is an example of social engineering.

Randall Munroe in an xkcd comic once presented a scenerio in which bad guys find it more convenient to hit Bob with a $5 wrench until he gives up his key rather than attempt to break the crypto system.


text:
Cryptography/Faults

The strength of your encryption method is based not only on your encryption method, but also on your ability to use it effectively. A perfect encryption method which is finicky to use and hard to get right is not likely to be useful in building a high quality security system.

For example, the One-Time Pad cypher is the only known provably unbreakable algorithm (in the very strong sense of a more effective than brute force search attack being impossible), but this proof applies ONLY if the key used is completely randomly chosen (there is currently no known method for making such a choice nor is there any known method for demonstrating that any particular choice is random), if the key is a long as the plaintext, if the key is never reused, and if the key never becomes known to the enemy. These conditions are so difficult to ensure that the One-Time Pad is almost never used in actual practice, whatever its theoretical advantages.

Any use of the One-Time Pad violating those assumed requirements is insecure, sometimes trivially so. For instance, statistical analysis techniques may be immediately applicable, under certain kinds of misuse.

title: Cryptography/Faults


text:
Introduction to Philosophy/Marx and Marxists

< Introduction to Philosophy

There may be no philosopher that has had more of an impact on society and politics than Karl Marx. His theory, in essence, embraces radical and revolutionary change.

Marx argues that the working class, or proletariat, are oppressed and alienated in the process of production (what Marx calls "alienated labor"). Unlike the skilled artisans of the past who could craft a product from start to finish, industrialization has led to the division of labor into many smaller repetitve processes. For example, a worker might only pull a lever, or attach a rivet, instead of crafting an entire product. In this way, workers became alientated from their final product. Likewise, in the competition of workers to be more 'profitable' to their employers, they initiate a 'race to the bottom' of the wage pile, willing to work for less and less. In this way, workers create strife amongst themselves and must sell themselves to their employers. This alienates themselves from each other (undermining class solidarity) and from their humanity — with a similar effect as prostitution.

According to Marx, the means of production must be appropriated by the workers and freed from the dehumanizing commodity form to meet the needs of society (production for the benefit of humankind, not for profit of the property-owning and ruling class, the bourgeois). Marx envisioned and projected a society free from social stratification, in which individual contribution and distribution of goods could be summarized: "From each according to ability, to each according to need." (Critique of the Gotha Program, 1875.)

The most influential book written by him was the Communist Manifesto.

Other works include:
 * Economic and Philosophic Manuscripts of 1844
 * The German Ideology
 * The Poverty of Philosophy
 * Capital